Objektno programiranje (C++) - Prva zadaća

Rješenja šaljite na moju mail adresu () do 22. travnja 2014. Zadaća se treba moći kompajlirati u Visual Studiu 2008.

Opće napomene

Poanta ove zadaće je shvatiti i dobro napraviti kontrolu kopiranja, te koristi naslijeđivanja (puno više nego napraviti dobro većinu i/li još više matematičkih operacija).

Broj

Napišite klasu Broj koja predstavlja veliki cijeli broj, te osnovne operacije na njemu. Neka je klasa interno reprezentirana nizom znamenaka proizvoljne duljine (nemojte direktno koristiti std spremnike, jer onda nema smisla raditi kontrolu kopiranja). Napravite kontrolu kopiranja.

Napravite funkciju duljina koja vraća duljinu broja, te operator[] koji dohvaća i-tu znamenku (od iza). Ako znamenka ne postoji, treba ju dodati, a ako se vodeća znamenka postavlja na 0, treba smanjiti duljinu broja.

Optimizirajte operacije tako da se nepotrebna kopiranja što je moguće više smanje.

Napišite konstruktor i pridruživanje s parametrom proizvoljno polje brojeva (template s netipskim parametrom), proizvoljni sekvencijalni spremnik (template template), int, te string.


Vektor

Napišite parametriziranu klasu Vektor koja predstavlja proizvoljan vektor brojeva.

Klasu napravite da radi kao pametni pokazivač, koji prilikom [], ako ima izmjena vrši kreiranje novog objekta.

Napravite konstruktore sve kao i u std::vectoru.

Napišite konstruktor s parametrom proizvoljno polje i standardni sekvencijalni spremnik.


Matrica

Napišite parametrizirano sučelje Matrica koja predstavlja matricu s osnovnim operacijama na njoj.

Napišite implementaciju dijagonalne matrice i normalne matrice. Neka su obje implementirane kao pametni pokazivači.

Napišite konstruktor s parametrom proizvoljno dvodimenzionalno polje i standardni sekvencijalni spremnik.


Napišite funkciju koja rješava sustav jednadžbi zadan matricom i vektorom.

Napišite main koji demonstrira upotrebu klasa.


Vinko Petričević, 15. travnja 2014.