Kodused ülesanded
NB! Klasside ja liikmefunktsioonide deklaratsioonid ja definitsioonid kirjuta päisefaili kujund.h
Liikmefunktsioonide definitsioonid peavad olema väljaspool klassi.
1. Universaalne punkt
Kirjuta klassimall universaalse punkti jaoks template <unsigned short const n> class Punkt{...}
, kus n
on dimensioon ehk koordinaatide arv). Klass peab töötama suvalise positiivse arvu korral.
Klassis on
- privaatne isendiväli
std::vector<float>*
, mis hoiab punkti koordinaate - vaikekonstruktor, kus punkti koordinaadid väärtustatakse nulliga
- ühe parameetriga konstruktor, mis saab ette viida koordinaatide vektorile
- destruktor, mis vabastab mälu koordinaatide vektori alt
- funktsioon
kaugusPunktist
, mis saab parameetrina ette punkti, mille suhtes kaugust arvutada
float kaugusPunktist (Punkt<n>& p1)
- funktsioon
toString
, mis tagastab sõnena (string) punkti koordinaadid(x1, x2, ..., xn)
- funktsioon
getKoordinaadid()
, mis tagastab viida koordinaatide vektorile
NB! Lisapunkt, kui on töötav üledefineeritud operaatori operator<<
Näide programmi tööst
|
|
2. Universaalne sirglõik
Kirjuta klassimall universaalse sirglõigu jaoks, milles on üks malliparameeter.
Klassis on
- kaks privaatset isendivälja
T* p1
jaT* p2
, mis hoiavad viitasid lõigu otspunktidele - vaikekonstruktorit ei ole
- kahe parameetriga konstruktor, mis saab ette viidad otspunktidele
- funktsioon
pikkus
, mis arvutab lõigu pikkuse - funktsioon
toString
, mis tagastab sõnena (string) lõigu kujul, nt(1, 2) - (2, 1)
. Kasutada punkti vastavat funktsiooni. - funktsioon
getKoordinaadid()
, mis tagastab viida koordinaatide vektorile
NB! Lisapunkt, kui on töötav üledefineeritud operaatori operator<<
Näide programmi tööst
|
|