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
get
jaset
meetod; - 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);
https://en.cppreference.com/w/cpp/language/copy_constructor
https://en.cppreference.com/w/cpp/language/move_constructor
- klassis on üle defineeritud kopeerimise ja teisaldamise operaatorid (copy assignment ja move assignment);
https://en.cppreference.com/w/cpp/language/copy_assignment
https://en.cppreference.com/w/cpp/language/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
get
jaset
meetodid; - klassil on ühe
PahupidiArv
-tüüpi parameetriga konstruktor, mis initsialiseerib lugeja. Nimetaja vaikeväärtus on arvule1
vastavPahupidiArv
-tüüpi objekt; - klassil on kahe
PahupidiArv
-tüüpi parameetriga konstruktor, mis initsialiseerib lugeja ja nimetaja. Kui nimetajale vastab0
, siis omistatakse nimetajaks arvule1
vastavPahupidiArv
-tüüpi objekt; - klassi objekti peab saama luua ka vaikekonstruktoriga, kus lugejaks on arvule
0
vastavPahupidiArv
-tüüpi objekt ja nimetajaks arvule1
PahupidiArv
-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.