Institute of Computer Science
  1. Courses
  2. 2018/19 spring
  3. MOOC Introduction to Programming II (LTAT.TK.001)
ET
Log in

MOOC Introduction to Programming II 2018/19 spring

  • Kursuse info
  • 1. Kahemõõtmeline järjend
  • 2. Kahekordne tsükkel
  • 3. Andmestruktuurid
  • 4. Viitamine ja muteerimine
  • 5. Testimine ja silumine. Rekursioon
  • 6. Rekursioon II
  • Korraldajad

Kontrollülesanne

Kursusel "Programmeerimise alused II" eeldame, et osaleja on suuteline iseseisvalt (materjalide abiga) ja mõistliku ajaga lahendama järgneva ülesande. Näidislahendus on toodud pärast ülesande teksti.

Ü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);
  • (kasutades vastavat funktsiooni) 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äiteks fail kaugus.txt, kus on arvud

6.56
5.76
5.82
5.23
5.74
6.14
5.28
5.77
6.45
6.02
5.78
annab tulemuse (kasutaja sisend on kaldkirjas)

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.


Fail kaugus.txt

Järgnevalt on toodud üks võimalik lahendus.

Lahendamise video

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)) + ".")

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment