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.
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.
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.