Harjutusülesanded
1. PahupidiArv
Loo klass PahupidiArv, mis käitub sarnaselt sisseehitatud täisarvutüübiga int, välja arvatud see, et:
- liitmine ja lahutamine on vastupidised;
- korrutamise ja jagamise tähendus on vastupidine.
Klass PahupidiArv peaks vastama järgmistele nõuetele:
- klassis on arvu hoidmiseks privaatne
int-tüüpi isendimuutuja, mille vaikeväärtus on0; - klassis on isendimuutuja jaoks
getjasetmeetod; - klassis on konstruktor, mille parameetriks on
int-tüüpi arv. Konstruktor initsialiseerib isendimuutuja; - klassi objekti peab saama luua ka vaikekonstruktoriga;
- klassis on ka koopiakonstruktor (copy constructor) ja teisalduskonstruktor (move constructor);
- klassis on üle defineeritud kopeerimise ja teisaldamise operaatorid (copy assignment ja move assignment);
- klassis on destruktor (destructor);
- klassis defineeritakse üle järgmised operaatorid: liitmine, lahutamine, korrutamine, jagamine,
+=, -=, *= ja /=; - klassis defineeritakse üle operaator
<<.
Vormistada selliselt, et deklaratsioonid on päisefailis pahupidiarv.h, definitsioonid failis pahupidiarv.cpp ja funktsioon main on eraldi failis. Testida oma klassi.
2. Ratsionaalarv
Loo klass Ratsionaalarv, mis esitab ratsionaalarvu (st arvu kujul lugeja/nimetaja kus lugeja ja nimetaja on täisarvud).
Klass peaks vastama järgmistele nõuetele:
- klassil on privaatsed
PahupidiArv-tüüpi isendimuutujad lugeja ja nimetaja hoidmiseks; - klassil on isendimuutujate jaoks
getjasetmeetodid; - klassil on ühe
PahupidiArv-tüüpi parameetriga konstruktor, mis initsialiseerib lugeja. Nimetaja vaikeväärtus on arvule1vastavPahupidiArv-tüüpi objekt; - klassil on kahe
PahupidiArv-tüüpi parameetriga konstruktor, mis initsialiseerib lugeja ja nimetaja. Kui nimetajale vastab0, siis omistatakse nimetajaks arvule1vastavPahupidiArv-tüüpi objekt; - klassi objekti peab saama luua ka vaikekonstruktoriga, kus lugejaks on arvule
0vastavPahupidiArv-tüüpi objekt ja nimetajaks arvule1PahupidiArv-tüüpi objekt; - klassil on ka koopiakonstruktor (copy constructor) ja teisalduskonstruktor (move constructor);
- klassil on destruktor (destructor);
- klassis defineeritakse üle liitmise, lahutamise, korrutamise ja jagamise operaatorid;
- klassis defineeritakse üle operaator
<<.
Vormistada selliselt, et deklaratsioonid on päisefailis ratsionaalarv.h, definitsioonid failis ratsionaalarv.cpp ja funktsioon main on eraldi failis. Testida oma klasse main funktsioonis.
3. Raamatud
Kirjuta programm, mis võimaldab hoida infot raamatute kohta (id, pealkiri, autor, hind). Programmis on klass Raamat ja raamatuid hoitakse andmekogumis vector<Raamat>. Klassis on erinevad konstruktorid ja on üle defineeritud operaator << raamatu info väljastamiseks mõistlikul viisil.
Programm peab võimaldama järgmisi tegevusi:
- raamatute sisselugemine failist andmekogumisse (tekstifaili struktuur mõtle ise välja);
- raamatu lisamine andmekogumisse (kasutaja käest küsitakse infot);
- raamatu eemaldamine andmekogumist pealkirja järgi;
- raamatute otsimine andmekogumist autori järgi.