Harjutusülesanded
1. Eri tüüpi erindid
a) Kirjuta funktsioon viska
, millel on üks täisarvuline parameeter ja mis teeb järgmist:
- kui
x = 1
, siis visatakseint
tüüpi erind - kui
x = 2
, siis visataksestring
tüüpi erind väärtusega"paar"
- muidu ei tehta midagi
b) Funktsioonis main
tehakse vektori vector<int>{0, 1, 2, 3}
iga elemendi korral järgmist:
- pöördutakse
viska (x)
ja kuvatakse ekraanile vektori element ja"korras\n"
. Püüda kinniint
jastring
tüüpi erindid. Erindikäsitleja peab kuvama ekraanile erindi tüübi (ntint
) ja väärtuse. - Programm peab normaalselt oma tööd jätkama (kuni kogu vektor on läbi käidud).
2. Tühjad arvud
Koostada erindiklassid ArvuPole
ja PoleArv
, mis on exception
alamklassid. Luua klass ArvuLugeja
, kus on funktsioon, mis võtab parameetriks sõne ja tagastab vector<int>
. Sõne peaks sisaldama komadega eraldatud täisarve.
- Kui sõnes komade vahel arv puudub (nt
1,2,,4
), siis visata erindArvuPole
. Erindi püüdmisel kuvada info"Arvu ei ole"
. - Kui komade vahel olev info ei ole täisarvuks teisendatav (nt
1,ab,,4
), siis visata erind"Pole arv"
. Erindi püüdmisel kuvada info"Pole arvuks teisendatav"
koos vastava sõnega.
Kõik erindid tuleb kinni püüda ja jätkata tööd sõne lõpuni. Funktsioonis main
võetakse käsurealt sõne, käivitatakse sellega arvulugeja funktsioon ja kuvatakse saadud vektor ekraanile.
3. Pitsatellimus
Veebist saab koju erinevaid pitsasid tellida. Ühe tellimusega saab tellida ka mitu erinevat pitsat. Teenuse pakkuja lubab, et tellija saab pitsad kätte maksimaalselt poole tunniga. Kui tellija peab rohkem ootama, siis ei ole vaja tellimuse eest maksta. Pitsad saadetakse välja tellimuste saabumise järjekorras. Ülesanne seisneb pitsatellimusi käsitleva programmi koostamises. Programm peab vastama alltoodud nõuetele (isegi kui need kummalised tunduvad). Programm peab sisaldama klasse Pitsa
, Tellimus
, erindiklassi LiigaPikkOotamineErind
ning peaklassi. Peaklassis luuakse pitsad ja tellimused ning simuleeritakse tellimuste vastuvõttu ja pitsade vedu.
- Klass
Pitsa
sisaldab privaatsetstring
-tüüpi isendivälja pitsa nimetuse jaoks ning privaatsetfloat
-tüüpi isendivälja pitsa hinna jaoks. Klassis on konstruktor, mis väärtustab vastavad väljad. Kõigi isendiväljade jaoks on vastavadget
-funktsioonid. Peab olema üle defineeritudoperator<<
. - Klassis
Tellimus
on privaatsed isendiväljad järgmise info jaoks: tellija (string
), vektor kõigi pitsade jaoks, ootamise aeg (int
). Klassis on konstruktor, mis väärtustab vastavad väljad. Peab olema üle defineeritudoperator<<
. Klassis on funktsioonmaksumus
, mis tagastab tellitud pitsade maksumuse. Kui oli vaja oodata rohkem kui 30 minutit, siis selles funktsioonis tuleb visata erindLiigaPikkOotamineErind
(koostada erindiklassLiigaPikkOotamineErind
). - Funktsioonis
main
luua tellimuste väljasaatmise järjekorra tarbeks üks vektor. - Failis
tellimused.txt
on igal real iga tellimuse jaoks kirjas tellija ning tellitud pitsad koos hindadega. Eraldajaks on semikoolon. Pitsa ja hinna eraldajaks on/
.
Nt.
Peeter Pedajas;Americana/3.80;Pizza Picante/6.90
.
Fail koosta ise.
- koosta funktsioon failist tellimuste andmete lugemiseks. Luua pitsad (
Pitsa
-tüüpi objektid) ja tellimused (Tellimus
-tüüpi objektid, ootamise aeg genereerida juhuslikult vahemikust [10-35]) ning paigutada tellimused väljasaatmise järjekorda. - Väljastada ekraanile tellimuste andmed. Iga tellimuse korral väljastada ekraanile tellimuse maksumus. Liiga aeglase veo korral (erindi
LiigaPikkOotamineErind
püüdmisel) kirjutada tellimuste andmed tekstifaililiigaAeglased.txt
. Arvutada ja väljastada ekraanile kõigi tellimuste eest saadud raha.