40 Ülesanne. Kaugushüpe

Noorte kaugushüppe võistlusel sai täita meistrivõistluste normatiivi. Juhtus aga, et mõõteseade muutis kõiki tulemusi ühe ja sama arvu sentimeetrite võrra. Õnneks olid tulemused faili salvestatud ja nüüd sai arvutades leida tegelikud tulemused.

Selleks, et edaspidi saaks selliseid olukordi kiiremini lahendada, otsustati tellida programm, mis lisaks tulemuste korrigeerimisele leiab ka normatiivi täitnud tegelike tulemuste arvu ning nende aritmeetilise keskmise.

Koostada funktsioon parandatud_tulemus, mis võtab argumentideks vigase tulemuse (meetrites) ja mõõteparanduse (sentimeetrites). Funktsioon arvutab tegeliku tulemuse (meetrites) ning tagastab selle.

tegelikTulemus = viganeTulemus + mõõteparandus / 100

Koostada programm, mis küsib kasutajalt

  • failinime,
  • mõõteparanduse (nt 35 näitab, et igale tulemusele tuleb liita 35 sentimeetrit (e 0,35 meetrit)),
  • meistrivõistluste normatiivi.

Programm peab

  • lugema failist vigased tulemused (meetrites);
  • funktsiooniga parandatud_tulemus arvutama tegelikud tulemused ja väljastama need ekraanile (ümardatuna kahe kümnendkohani pärast koma);
  • arvutama ja väljastama ekraanile normatiivi täitnud tegelike tulemuste arvu ja nende keskmise (ümardatuna kahe kümnendkohani pärast koma).
    • Kui normatiivi täitjaid ei ole, siis keskmist ei arvutata ega väljastata.

Näide programmi tööst

Faili kaugus.txt sisu:

6.56
5.76
5.82
5.23
5.74
6.14
5.28
5.77
6.45
6.02
5.78


Programmi töö:

Sisestage failinimi: kaugus.txt
Sisestage parandus sentimeetrites: 35
Sisestage meistrivõistluste normatiiv meetrites: 6.45
Tegelikud tulemused
6.91
6.11
6.17
5.58
6.09
6.49
5.63
6.12
6.8
6.37
6.13
Normatiivi täitis 3.
Täitnute keskmine on 6.73.

Näidislahendus

Sellele ülesandele anname ka näidislahenduse. Järgmistes ülesannetes pead ilma selleta hakkama saama.

Vaata ka lahenduse loomise videot.

def parandatud_tulemus(vigane_tulemus, parandus):
    return vigane_tulemus + parandus / 100

failinimi = input("Sisestage failinimi: ")
mõõteparandus = int(input("Sisestage parandus sentimeetrites: "))
normatiiv = float(input("Sisestage meistrivõistluste normatiiv meetrites: "))

vigased_tulemused = []
f = open(failinimi)
for rida in f:
    vigased_tulemused += [float(rida)]

tegelikud_tulemused = []

print("Tegelikud tulemused")
for tulemus in vigased_tulemused:
    tegelik_tulemus = parandatud_tulemus(tulemus, mõõteparandus)
    print(round(tegelik_tulemus, 2))
    tegelikud_tulemused += [tegelik_tulemus]

arv = 0
summa = 0
for tulemus in tegelikud_tulemused:
    if tulemus >= normatiiv:
        arv += 1
        summa += tulemus

print("Normatiivi täitis " + str(arv) + ".")
if arv > 0:
    print("Täitnute keskmine on " + str(round(summa/arv, 2)) + ".")

 

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut