Teisel nädalal tuleb esitada nelja kohustusliku ülesande lahendused. Neljanda ülesande puhul on võimalik valida lahendamiseks vähemalt üks järgmistest ülesannetest, kas 2.4a, 2.4b või 2.4c (võib ka kaks või kolm lahendada).
Kontrollülesanne 2.1. Jäätumine
Mitmed autod hoiatavad võimaliku jää eest, kui temperatuur õues on 4,0 või alla selle.
Koostada programm, mis
- küsib kasutajalt õhutemperatuuri,
- väljastab ekraanile Ei ole jäätumise ohtu, kui sisestatu on üle 4,0,
- väljastab On jäätumise oht, kui temperatuur on 4,0 või alla selle.
Temperatuuri võib sisestada nii täisarvuna kui ka ujukomaarvuna, nt -1.3.
Näited programmi tööst:
Kontrollülesanne 2.2. Spämm
Kirjade seast rämpsposti (spämmi) leidmiseks saab kasutada filtreid, mis filtreerivad välja konkreetsetele tingimustele vastavaid kirju. Kalmer teeb filtrit, kus filtreeritakse välja kirjad, mille kohta on vähemalt üks järgmistest tingimustest tõene:
- kirjal ei ole teema pealkirja,
- kiri sisaldab manusena faili ja kirja suurus ületab 1 MB.
Koostada Kalmeri jaoks programm, milles
- küsitakse kirja suurust megabaitides (kasutaja sisestab ujukomaarvu),
- küsitakse kirja teema pealkirja (kasutaja sisestab teema pealkirja või kasutaja sisestus on tühi),
- küsitakse, kas kirjaga on kaasas fail (kasutaja sisestab jah või ei),
- väljastatakse ekraanile Kiri on spämm, kui kiri filtreeritakse välja, vastasel juhul väljastatakse Kiri ei ole spämm.
Proovige kirjutada programm, kasutades ainult ühte tingimuslauset. Kui see ei õnnestu, siis võib ka mitmega.
NB! Kasutaja käest peab kindlasti küsima kolm korda.
Näited programmi tööst:
Kontrollülesanne 2.3. Leedu perenimed
Inimese nimede osas on erinevatel maadel erinevaid kombeid ja vähemalt naabrite puhul oleks hea neid teada (areneva Balti koostöö mõttes).
Traditsiooniliselt näitab leedu naiste perekonnanimedes nime lõpp perekonnaseisu. Näiteks on Adamkienė abielus ja Adamkutė mitte. Alates 2003. aastast on lubatud ka lühem vorm, mis perekonnaseisu ei näita, nt Adamkė. Huvi korral uuri lähemalt siit.
Koostada programm, mis küsib kasutajalt Leedu perekonnanime ja väljastab ekraanile
- Abielus, kui nimi lõpeb tähtedega “ne”,
- Vallaline, kui nimi lõpeb tähtedega “te”,
- Määramata, kui nimi lõpeb tähega “e” (aga mitte “ne” ja “te”),
- Pole ilmselt leedulanna perekonnanimi, kui nimi ei lõpe tähega “e”.
Lihtsuse mõttes kasutame tavalist tähte “e”, jätame punkti peale panemata.
Sõne nimi
kahe viimase tähe kontrollimiseks saab kasutada näiteks võrdlemist nimi[-2:] == "ne"
. Viimase tähe kontrollimiseks sobib nimi[-1] == "e"
.
Näited programmi tööst:
Kontrollülesanne 2.4a – Pulss
Kolmest ülesandest (2.4a, 2.4b, 2.4c) tuleb lahendada vähemalt üks.
Tervisesport on tervisele kasulik, kui sellega jäädakse mõõdukuse piiridesse. On erinevaid variante sobiva koormuse valimiseks. Näiteks saab kasutada sellist arvestust, et maksimaalne pulsisagedus on meestel 220 miinus vanus ja naistel 206 miinus 88% vanusest. Seejuures erinevate treeningutüüpide puhul peaks pulsisagedus jääma järgmistesse vahemikesse:
- tervisetreening 50-70% maksimaalsest pulsisagedusest,
- põhivastupidavuse treening 70-80% maksimaalsest pulsisagedusest,
- intensiivne aeroobne treening 80-87% maksimaalsest pulsisagedusest.
Koostada programm, mis küsib kasutajalt
- vanuse (täisarvuna aastates),
- soo (kasutaja sisestab M, m, N või n),
- treeningu tüübi (1 – tervisetreening, 2 – põhivastupidavuse treening, 3 – intensiivne aeroobne treening)
ja lõpuks väljastab pulsisageduse vahemiku vastavatel tingimustel formaadis <vähim pulss> kuni <suurim pulss>, kus vastuses leiduvad arvud on ümardatud täisarvudeks.
Näited programmi tööst:
Kontrollülesanne 2.4b – Istekoht
Kolmest ülesandest (2.4a, 2.4b, 2.4c) tuleb lahendada vähemalt üks.
Odavlennufirmad pakuvad reisijatele küllaltki soodsaid lennupileteid, kuid lisaväärtuse eest peavad reisijad juurde maksma. Näiteks kui tahetakse lennukis istekoht ise valida, siis ka seda saab lisatasu eest. Istekohta valides küsitakse inimeselt, kas ta soovib istuda akna äärde või mujale. Kui reisija ei taha valida, siis loositakse istekoht nii, et 1/3 tõenäosusega on see akna ääres ja 2/3 tõenäosusega mujal.
Koostada programm, mis vastab järgmistele tingimustele:
- Kasutajalt küsitakse, kas ta soovib istekoha ise valida. Ise valimiseks sisestab kasutaja ”ise”. Vastasel juhul kirjutab kasutaja ”loos”.
- Kui kasutaja soovis ise valida, siis küsitakse tema käest, kas ta soovib istuda akna ääres (kasutaja sisestab ”aken”) või mitte (kasutaja sisestab ”muu”).
- Kui kasutaja valis loosi, siis loositakse talle istekoht nii, et 1/3 tõenäosusega on see akna ääres ja 2/3 tõenäosusega mujal.
- Väljastatakse, kas kasutaja valis istekoha ise (”Valisite ise”) või valiti see loosiga (”Istekoht loositi”).
- Väljastatakse, kas kasutaja istekoht on akna ääres (”Aknakoht”) või mitte (”Vahekäigukoht”).
Lahendus peab korrektselt kasutama funktsiooni randint()
moodulist random
.
Kontrollülesanne 2.4c – Bussid
Kolmest ülesandest (2.4a, 2.4b, 2.4c) tuleb lahendada vähemalt üks.
Meil on vaja transportida teatud arv inimesi mingi arvu identsete bussidega. Eeldame, et reisijaid on vähemalt üks.
Koostada programm, mis küsib transporditavate inimeste arvu ja ühe bussi kohtade arvu (just sellises järjekorras) ning väljastab ekraanile, mitu bussi on vaja ja mitu inimest on viimases bussis (eeldusel, et kõik eelnevad bussid on täis).
Võib-olla on abi nendest tehetest
- // täisarvuline jagamine, 36 // 10 → 3
- % jäägi leidmine 36 % 10 → 6
Testige oma programmi muuhulgas järgmiste algandmetega:
- inimeste arv: 60, kohtade arv: 40;
- inimeste arv: 80, kohtade arv: 40;
- inimeste arv: 20, kohtade arv: 40;
- inimeste arv: 40, kohtade arv: 40.
Püüdke ka mõista, miks just sellised testandmed valiti.
Näited programmi tööst: