Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 6. nädala sisukord | järgmine > |
6.8 Kuuenda nädala kontrollülesanded 6.4abc
Kuuendal nädalal tuleb esitada nelja kohustusliku ülesande lahendused. Neljanda ülesande puhul on võimalik valida lahendamiseks vähemalt üks järgmistest ülesannetest, kas 6.4a, 6.4b või 6.4c (võib ka kaks või kolm lahendada). Lahendused tuleb esitada Moodle'is, kus need kontrollitakse automaatselt. Moodle'is on ka nädalalõputest 10 küsimusega, millest tuleb vähemalt 9 õigesti vastata.
Kui teile tundub, et automaatkontroll töötab ebakorrektselt, siis palun kirjutage aadressil prog@ut.ee.
Järgmisest kolmest ülesandest (6.4a, 6.4b, 6.4c) tuleb lahendada vähemalt üks.
Kontrollülesanne 6.4a Tervitused mõtisklustega
Muuta ülesandes 6.1 koostatud programmi nii, et tervitamisel lisatakse ka, mitmes tervitus käsil on. Selleks tuleb funktsioonile tervitus
lisada argument, seda funktsioonis sobivalt kasutada ja igal tsükli sammul tuleb funktsioon välja kutsuda ühe võrra suurema argumendiga kui eelmisel korral.
Näited programmi tööst:

220 külalise puhul on algus ja lõpp sellised.

...

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
Euromüntide seerias on kuus erineva nimiväärtusega senti: 1 sent, 2 senti, 5 senti, 10 senti, 20 senti, 50 senti. Sendid väärtustega 1, 2 ja 5 on pronksikarva (vasega kaetud teras), sendid väärtustega 10, 20 ja 50 on kullakarva (vasesulam, mis sisaldab alumiiniumi, tsinki ja tina, nn Nordic Gold).
Peres on kombeks, et pronksikarva mündid panna hoiupõrsasse.
Müntide andmed on failis kirjas nii, et iga mündi väärtus on eraldi real. Näiteks nii:
1
20
20
5
50
2
2
1
Koostada funktsioon pronksikarva_summa
, mis
- võtab argumendiks täisarvude järjendi ja
- tagastab selles järjendis olevate arvude 1, 2 ja 5 summa.
Koostada programm, mis
- küsib kasutajalt selle faili nime, milles asuvad sentide väärtused;
- moodustab täisarvujärjendi vastavast failist loetud väärtustest;
- rakendab funktsiooni
pronksikarva_summa
, andes argumendiks koostatud täisarvujärjendi; - väljastab ekraanile tulemuseks saadud kõikide pronksikarva sentide summa.
Näide programmi tööst:
Näiteks ülaltoodud andmete korral failis nimega mündid.txt peab ekraanile ilmuma

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
Kuupäevade esitamisel tekib enim probleeme, kui kuupäev kirjutatakse kujul „05.06.2005“ – sellisel puhul pole võimalik aru saada, kas on mõeldud 5. juunit või hoopis 6. maid. Eestis ja enamikes teistes riikides kirjutatakse kuupäev reeglina formaadis DD.MM.YYYY, kuid Ameerika Ühendriikides on levinum järjekord MM.DD.YYYY. (Huvi korral vt https://en.wikipedia.org/wiki/Date_format_by_country.) Segaduse vältimiseks tuleks kuu nimi välja kirjutada.
Kirjutada kõigepealt funktsioon kuu_nimi
, mis võtab argumendiks kuu järjekorranumbri ja tagastab vastava kuu nime (väikeste tähtedega).
Vihje: Seda funktsiooni saab kirjutada, kasutades vastuse andmisel if-lauseid, aga optimaalne lahendus oleks kasutada järjendit (siis ühtegi if-lauset vaja ei ole).
Seejärel looge funktsioon kuupäev_sõnena
, mis võtab argumendiks ühe sõnena esitatud kuupäeva formaadis “DD.MM.YYYY” (nt '24.02.1918') ning tagastab selle sama kuupäeva kujul <päev>. <kuu_nimi> <aasta>. a (nt '24. veebruar 1918. a'), kusjuures kuupäev_sõnena
peab ühe toimingu delegeerima funktsioonile kuu_nimi
. Abiks võib ka olla funktsioon split
.
Seejärel kirjutage programm, mis küsib kasutajalt kuupäeva kujul “DD.MM.YYYY” ning väljastab ekraanile vastava kuupäeva sõnena kujul<päev>. <kuu_nimi> <aasta>. a.
Näited programmi tööst:


Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
< eelmine | 6. nädala sisukord | järgmine > |