Domaca Zadaca 3

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Zadaća 3.

1. Dopunite program “matrica_struct.cpp” priložen uz Predavanje 7. funkcijama


“ProduktMatrica” i “StepenMatrica”. Funkcija “ProduktMatrica” prima dvije matrice
kao parametre (matrice su definirane kao odgovarajuće strukture) i vraća njihov produkt kao
rezultat, odnosno baca izuzetak ukoliko matrice nisu saglasne za množenje. Funkcija
“StepenMatrica” prima matricu kao jedan parametar, kao drugi parametar prima prirodan
broj n, i kao rezultat vraća matricu dignutu na n-ti stepen (u matričnom smislu) odnosno baca
izuzetak ukoliko matrica nije kvadratna, s obzirom da je stepen matrice definiran samo za
kvadratne matrice (pri realizaciji ove funkcije možete koristiti već napisanu funkciju
“ProduktMatrica”). Također, proširite funkciju “IspisiMatricu” dodatnim parametrom
“treba_brisati” tipa “bool”. Ukoliko ovaj parametar ima vrijednost “true”, funkcija treba
da oslobodi prostor zauzet matricom koja joj je proslijeđena kao parametar, u suprotnom ne
treba da radi ništa. Ovim se omogućava da možemo zadavati pozive poput

IspisiMatricu(ZbirMatrica(a, b), 7, true);

tako da se oslobađanje memorije koju je zauzela pomoćna matrica koja predstavlja zbir matrica
može obaviti bez korištenja pomoćne promjenljive (kao u programu “matrica_struct.cpp”).
Definirajte da parametar “treba_brisati” ima podrazumijevanu vrijednost “false”, tako da
ga ne treba navoditi ukoliko nam brisanje ne treba. Napisane funkcije testirajte u glavnom
programu na primjeru matrica čije dimenzije i elemente unosi korisnik putem tastature. U
glavnom programu predvidite hvatanje svih izuzetaka koji bi eventualno mogli nastupiti.
Također, dobro pazite da nigdje ne dođe do curenja memorije (ni pod kakvim okolnostima).

2. Definirajte strukturu “Cvor” koja sadrži polje “element” tipa “string” i polje “veza” koje je
tipa pokazivač na “Cvor”. Iskoristite ovu strukturu u programu koji čita slijed rečenica sa
tastature sve dok se ne unese prazna rečenica (tj. dok se ne pritisne samo ENTER bez ikakvog
prethodnog unosa), i koji uvezuje te rečenice u povezanu listu čvorova, ali koji nakon unosa
svake od rečenica umeće čvor na takvo mjesto da lista u svakom trenutku bude sortirana po
abecedi (odnosno po poretku ASCII kodova) kada se posmatra u redoslijedu kako idu veze
između čvorova. Na kraju, program treba da ispiše sve rečenice u listi, da se uvjerimo da je lista
zaista sortirana.

3. Definirajte i implementirajte kompletnu klasu “Datum” sa svim atributima i metodima koji su


prikazani u Predavanju 8. a nakon toga proširite klasu dodavanjem nove metode
“VratiDanUSedmici” koja vraća ime dana u sedmici koji odgovara datumu (preciznije rečeno,
pokazivač na prvi znak imena dana u sedmici, poput metode “VratiImeMjeseca”). Na
primjer, ukoliko je pohranjeni datum 3. 5. 2006. metoda treba da vrati tekst “Srijeda” kao
rezultat (odnosno pokazivač na prvi znak tog teksta). Napisanu klasu demonstrirajte u testnom
programu u kojem ćete demonstrirati sve elemente napisane klase.

4. Neka je data deklaracija

enum Pravci {Sjever, Istok, Jug, Zapad};

Definirajte klasu “Robot” koja predstavlja zamišljenog robota koji može da se kreće kroz
koordinatni sistem sa cjelobrojnim koordinatama i koji može da gleda u jednom od četiri pravca
definirana u pobrojanom tipu “Pravci”. Klasa treba da ima sljedeći interfejs:

Postavi(int x, int y, Pravci p);


void PomjeriSe(int korak);
void Nalijevo();
void Nadesno();

1
int Pozicija_x() const;
int Pozicija_y() const;
Pravci Orjentacija() const;
void Ispisi() const;

Metoda “Postavi” treba da postavi robot na zadanu poziciju, i da ga usmjeri u zadani pravac.
Metoda “PomjeriSe” pomjera robota zadani broj koraka u pravcu u kojem robot trenutno
gleda. Metode “Nalijevo” i “Nadesno” obrću robota za 90o na lijevo odnosno na desno.
Metode “Pozicija_x”, “Pozicija_y” i “Orjentacija” treba da vrate tekuću poziciju
odnosno orjentaciju robota. Metoda “Ispisi” treba da ispiše podatke o poziciji i orjentaciji
robota na način kao u sljedećem primjeru:

Robot se nalazi na poziciji (3,–5) i gleda na istok.

Napisanu klasu upotrijebite u programu u kojem će korisnik moći da bira neku od dozvoljenih
operacija sa robotom, a nakon svake izvršene operacije program treba da prikaže tekuću poziciju
i orjentaciju (kratke metode dozvoljeno je implementirati odmah unutar deklaracije klase).

Napomena:

Moguća rješenja zadataka za zadaću biće publikovana naknadno, nakon isteka roka za predaju zadaće.

You might also like