OOPLab Vezba 2

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

1

Operatorske funkcije

Zadatak 1.
Kreirati klasu Complex za modelovanje kompleksnih brojeva. Od privatnih lanova treba
da ima po jednu double promenljivu za realni i imaginarni deo, a od javnih operatore za
unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne konstruktore i funkcije za
pristup privatnim lanovima.
Klasu Set, kreiranu u prvoj vebi, prepraviti tako da umesto niza elemenata tipa int
sadri niz elemenata tipa Complex, i dodati:
operatorski funkciju - koja odreuje razliku 2 skupa
operatorsku funkciju + koja odreuje uniju 2 skupa
operatorsku funkciju * koja podreuje presek 2 skupa i
operatorsku funkciju = koja dodeljuje jedan skup drugom.
Takoe, funkciju za uitavanje elemenata skupa sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje elemenata iz tekstualnog toka
podataka, a funkciju za prikaz elemenata skupa na standardni izlaz, prijateljskom
operatorskom funkcijom << za upis elemenata skupa u tekstualni tok podataka.
U funkciji main kreirati dva objekta klase Set sa po 5 i 8 elemenata, respektivno, uitati
njihove elemente sa standardnog ulaza i na standardni izlaz prikazati njihovu uniju,
presek i razliku.
Zadatak 2.
Kreirati klasu Ispit koja od privatnih lanova treba da ima jednu promenljivu u kojoj e
da pamti ime ispita (char*) i jednu u kojoj e da pamti ocenu (int). Od javnih lanova
klasa treba da sadri operatore za poreenje (npr < ili >), unos i tampanje, kao i sve
neophodne konstruktore i funkcije za pristup privatnim lanovima.
U klasi Student, kreiranoj u prvoj vebi, zameniti vektor ocena vektorom objekata klase
Ispit i dodati:
konstruktor bez argumenata koji broj ispita postavlja na 30,
operatorski funkciju > koja poredi dva studenta prema prosenoj oceni,
operatorsku funkciju = koja jedan objekat klase Student dodeljuje drugom.
Takoe, funkciju za uitavanje podataka o studentu sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje podataka o studentu iz
tekstualnog toka podataka, a funkciju za prikaz podataka o studentu na standardni izlaz,
prijateljskom operatorskom funkcijom << za upis podataka o studentu u tekstualni tok
podataka.
U funkciji main kreirati vektor objekata klase Student (sa po 30 ispita), uitati njihove
podatke sa standardnog ulaza, urediti niz u nerastuem redosledu prema prosenoj
oceni i ureeni niz prikazati na standardni izlaz.
Zadatak 3. U klasu Poligon, kreiranu u prvoj vebi, dodati:

prefiksnu operatorski funkciju -- koja preslikava poligon simetrino u odnosu


na x osu,
postfiksnu operatorsku funkciju -- koja preslikava poligon simetrino u odnosu
na y osu.
Takoe, funkciju za uitavanje koordinata temena sa standardnog ulaza zameniti
prijateljskom operatorskom funkcijom >> za uitavanje koordinata iz tekstualnog toka
podataka, a funkciju za prikaz koordinata temena na standardni izlaz, prijateljskom
operatorskom funkcijom << za upis koordinata u tekstualni tok podataka.
Dodati u program klasu Slika koja od privatnih lanova ima maksimalan broj poligona na
slici i dinamiki niz tipa Poligon, a od javnih lanova funkcije za dodavanje poligona u
niz kao i operator za tampanje.
U funkciji main kreirati objekat klase Poligon sa 5 temena, uitati koordinate temena sa
standardnog ulaza, i preslikati ga simetrino na x, a onda i u odnosu na y osu i nakon
svakog preslikavanja prikazati koordinate temena na standardni izlaz. Isto to uraditi i sa
jednim objektom klase Poligon sa 3 temena. Kreirati jedan objekat klase slika sa
maksimalno 5 elemenata i dodati mu kreirana dva poligona.
Zadatak 4. U klasu String, kreiranu u prvoj vebi, dodati:
operatorsku funkciju + koja vri nadovezivanje dva stringa,
prefiksnu operatorsku funkciju ++ koja prvo slovo u stringu konvertuje u
veliko,
postfiksnu operatorsku funkciju ++ koja sva slova u stringu konvertuje u
velika,
operatorsku funkciju = koja jedan objekat klase string dodeljuje drugom.
Takoe, funkciju za uitavanje stringa sa standardnog ulaza zameniti prijateljskom
operatorskom funkcijom >> za uitavanje stringa iz tekstualnog toka podataka, a
funkciju za prikaz stringa na standardni izlaz, prijateljskom operatorskom funkcijom <<
za upis stringa u tekstualni tok podataka.
Dodati u program klasu Paragraph koja od privatnih lanova ima maksimalan broj
stringova i dinamiki niz tipa String, a od javnih lanova funkcije za dodavanje stringa u
paragraf kao i operator za tampanje.
U funkciji main kreirati 2 objekta klase string, uitati njihove vrednosti sa standardnog
ulaza, u prvom stringu prvo slovo konvertovati u veliko, u drugom stringu sva slova
konvertovati u velika, izvriti nadovezivanje tako transformisanih stringova, rezultujui
string dodeliti treem objektu klase string i prikazati ga na standardni izlaz.
Kreirati jedan objekat klase paragraf, dodati mu sve kreirane stringove i odtampati
paragraf na standardni izlaz.
Zadatak 5. U klasu Image, koja je kreirana u prvoj vebi, dodati:
operatorsku funkciju + koja preklapa sadraje dveju slika (u rezultujuoj slici
piksel na poziciji i,,j dobija vrednost 1, ako je bar u jednoj od slika koje se
preklapaju na toj poziciji bila vrednost 1),
operatorsku funkciju = za dodelu jednog objekta klase Image drugom.
Takoe, funkciju za invertovanje zameniti prefiksnom operatorskom funkcijom --,
funkciju za uitavanje sadraja slike sa standardnog ulaza zameniti prijateljskom

operatorskom funkcijom >> za uitavanje sadraja slike iz tekstualnog toka podataka, a


funkciju za prikaz sadraja slike na standardni izlaz, prijateljskom operatorskom
funkcijom << za upis sadraja slike u tekstualni tok podataka.
Dodati u program klasu Kolekcija koja od privatnih lanova ima maksimalan broj slika u
kolekciji i dinamiki niz tipa Slika, a od javnih lanova funkcije za dodavanje slika u
kolekciju kao i operator za tampanje.
U funkciji main kreirati 2 objekta klase Image reda 5x5, uitati njihove sadraje sa
standardnog ulaza, invertovati ih i izvriti njihovo preklapanje. Rezultujuu sliku dodeliti
treem objektu klase Image i njegov sadraj prikazati na standardni izlaz.
Kreirati jedan objekat tipa Kolekcija, dodati mu kreirane slike i odtampati ga na
standardni izlaz.
Zadatak 6.
Kreirati klasu Complex za modelovanje kompleksnih brojeva. Od privatnih lanova treba
da ima po jednu double promenljivu za realni i imaginarni deo, a od javnih operatore za
unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne konstruktore i funkcije za
pristup privatnim lanovima.
Klasu Buffer, kreiranoj u prvoj vebi, prepraviti da radi sa objektima tipa Complex a ne
celobrojnim podacima, i u nju dodati:
operatorsku funkciju + koja nadovezuje sadraje 2 bafera,
operatorsku funkciju koja iz bafera izbacuje zadati element,
operatorsku funkciju = za dodelu jednog objekta klase Buffer drugom.
Takoe, funkciju za prikaz sadraja bafera na standardni izlaz zameniti prijateljskom
operatorskom funkcijom << za upis sadraja slike u tekstualni tok podataka.
U funkciji main kreirati 2 objekta klase Buffer, u njih upisati po nekoliko elemenata,
nadovezati ih i rezultujui objekat dodeliti treem objektu klase Buffer. Iz tog objekta
izbaciti neki od unetih elemenata i prikazati ga na standardni izlaz.

Zadatak 7.
Kreirati klasu Complex za modelovanje kompleksnih brojeva. Od privatnih lanova treba
da ima po jednu double promenljivu za realni i imaginarni deo, a od javnih operatore za
unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne konstruktore i funkcije za
pristup privatnim lanovima.
Klasu TriangleMatrix, kreiranu u prvoj vebi, prepraviti da radi sa objektima tipa
Complex i u nju dodati:
operatorsku funkciju + koja sabira dve trougaone matrice iste dimenzije,
operatorsku funkciju + koja svim elementima matrice dodaje zadati ceo broj,
operatorsku funkciju * za mnoenje sa trougaonom matricom iste dimenzije,
operatorsku funkciju = za dodelu jednog objekta klase Buffer drugom.
Takoe, implementirati i sledee prijateljske operatorske funkcije
operatorsku funkciju * koja mnoi ceo broj i trougaonu matricu tako to
pomnoi svaki element matrice zadatim brojem,
operatorsku funkciju >> za uitavanje sadraja matrice iz zadatog tekstualnog
toka,

operatorsku funkciju << za upis sadraja matrice u tekstualni tok podataka.


U funkciji main kreirati 2 objekta klase TriangleMatrix i na standardni izlaz prikazati
njihov zbir, proizvod, rezultat sabiranja prve matrice sa konstantom 5 i rezultat
mnoenja konstante 5 i druge matrice. Rezultat svake operacije najpre dodeliti novom
objektu i sadraj tog objekta prikazati.
Zadatak 8.
Kreirati klasu Tacka za modelovanje trodimenzionalnih taaka brojeva. Od privatnih
lanova treba da ima po jednu double promenljivu za svaku od 3 dimenzije, a od javnih
operatore za unos, mnozenje skalarom, tampanje, sabiranje i oduzimanje, kao i sve
neophodne konstruktore i funkcije za pristup privatnim lanovima.
U klasi Niz, kreiranoj u prvoj vebi, zameniti niz celih brojeva nizom elemenata tipa
Tacka i dodati:
operatorsku funkciju + koja sabira 2 niza iste duine,
operatorsku funkciju + koja sve koordinate svih lanova niza uveca za zadati
ceo broj,
operatorsku funkciju = za dodelu jednog objekta klase Niz drugom.
Takoe, implementirati i sledee prijateljske operatorske funkcije
operatorsku funkciju * koja mnoi ceo broj i niz tako to pomnoi svaki
element niza zadatim brojem,
operatorsku funkciju >> za uitavanje sadraja niza iz zadatog tekstualnog
toka,
operatorsku funkciju << za upis sadraja niza u tekstualni tok podataka.
U funkciji main kreirati 2 objekta klase Niz i na standardni izlaz prikazati njihov zbir,
proizvod, rezultat sabiranja prvog niza sa konstantom 5 i rezultat mnoenja konstante 5
i drugog niza. Rezultat svake operacije najpre dodeliti novom objektu i sadraj tog
objekta prikazati.
Zadatak 9.
Kreirati klasu Tacka za modelovanje trodimenzionalnih taaka. Od privatnih lanova
treba da ima po jednu double promenljivu za svaku od 3 dimenzije, a od javnih
operatore za unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne
konstruktore i funkcije za pristup privatnim lanovima.
U klasi Vektor, kreiranoj u prvoj vebi, zameniti niz celih brojeva nizom elemenata tipa
Tacka i dodati:
postfiksnu operatorsku funkciju ++ koja rotira sadraj vektora za jedno mesto
udesno,
prefiksnu operatorsku funkciju ++ koja rotira sadraj vektora za jedno mesto
ulevo,
Takoe, implementirati i sledee prijateljske operatorske funkcije
operatorsku funkciju >> za uitavanje sadraja vektora iz zadatog tekstualnog
toka,
operatorsku funkciju << za upis sadraja vektora u tekstualni tok podataka.

U funkciji main kreirati 2 objekta klase Vektor, uitati njihove sadraje sa standardnog
ulaza i na standardni izlaz prikazati njihov skalarni proizvod. Zatim, prvi vektor rotirati za
k mesta udesno i prikazati ga na standardni izlaz, a elemente drugog vektora uveati za
k i prikazati ga na standardni izlaz.
Zadatak 10. U klasu Minesweeper, kreiranu u prvoj vebi, dodati:
postfiksnu operatorsku funkciju ++ koja sve mine u minskom polju pomera za
jedno mesto udesno (one iz poslednje kolone prenosi u prvu),
postfiksnu operatorsku funkciju ++ koja sve mine u minskom polju pomera za
jedno mesto nadole (one iz poslednje vrste prenosi u prvu),
postfiksnu operatorsku funkciju -- koja sve mine u minskom polju pomera za
jedno mesto ulevo (one iz prve kolone prenosi u poslednju),
postfiksnu operatorsku funkciju -- koja sve mine u minskom polju pomera za
jedno mesto nagore (one iz prve vrste prenosi u poslednju),
Takoe, implementirati i sledee prijateljske operatorske funkcije
operatorsku funkciju >> za uitavanje sadraja minskog polja iz zadatog
tekstualnog toka,
operatorsku funkciju << za upis sadraja minskog polja u tekstualni tok
podataka.
U funkciji main kreirati objekat klase Minesweeper i translirati mine u sva etiri smera.
Nakon svakog transliranja novi sadraj minskog polja prikazati na standardni izlaz.
Zadatak 11.
Kreirati klasu Tacka za modelovanje trodimenzionalnih taaka. Od privatnih lanova
treba da ima po jednu double promenljivu za svaku od 3 dimenzije, a od javnih
operatore za unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne
konstruktore i funkcije za pristup privatnim lanovima.
U klasi Matrica, kreiranoj u prvoj vebi, zameniti niz double brojeva nizom elemenata
tipa Tacka i dodati:
prefiksnu operatorsku funkciju ++ koja poveava vrednost svakog polja za 1 i
zatim vraa sumu svih polja (++ nad objektima klase Tacka treba da uvecava
svaku od koordinata za 1)
postfiksnu operatorsku funkciju ++ koja vraa sumu svih polja i zatim poveava
vrednost svakog polja za 1 (++ nad objektima klase Tacka treba da uvecava
svaku od koordinata za 1)
operatorsku funkciju = za dodelu jednog objekta klase Matrica drugom.
Operatorsku funkciju []
prijateljsku operatorsku funkciju >> za uitavanje sadraja matrice iz zadatog
tekstualnog toka,
prijateljsku operatorsku funkciju << za upis sadraja matrice u tekstualni tok
podataka.
U funkciji main kreirati objekat klase Matrica, uitati vrednosti elija matrice sa
standardnog ulaza. Zatim sumirati vrednosti 1 i 3. kolone, kao i 2 i 3. reda, demonstrirati
upotrebu svih navedenih operatora, a potom odtampati matricu.

Zadatak 12.
Kreirati klasu Tacka za modelovanje trodimenzionalnih taaka. Od privatnih lanova
treba da ima po jednu double promenljivu za svaku od 3 dimenzije, a od javnih
operatore za unos, tampanje, sabiranje i oduzimanje, kao i sve neophodne
konstruktore i funkcije za pristup privatnim lanovima.
U klasi Vektor, kreiranoj u prvoj vebi, zameniti niz double brojeva nizom elemenata tipa
Tacka i dodati:
operatorsku funkciju + koja sabira 2 niza iste duine,
operatorsku funkciju + koja svim koordinatama svih lanova niza dodaje zadati
ceo broj,
operatorsku funkciju = za dodelu jednog objekta klase Vektor drugom.
prijateljsku operatorsku funkciju * koja mnoi ceo broj i niz tako to pomnoi
svaku korrdinatu svakog elementa niza zadatim brojem,
prijateljsku operatorsku funkciju >> za uitavanje sadraja vektora iz zadatog
tekstualnog toka,
prijateljsku operatorsku funkciju << za upis sadraja vektora u tekstualni tok
podataka.
U funkciji main kreirati 2 objekta klase Vektor i na standardni izlaz prikazati njihov zbir,
proizvod, rezultat sabiranja prvog niza sa brojem 8 i rezultat mnoenja broja 6 i drugog
niza. Rezultat svake operacije najpre dodeliti novom objektu i sadraj tog objekta
prikazati.
Zadatak 13. Klasi Fabrika, kreiranoj u prethodnoj vebi, dodati sledee operatorske
funkcije:
operatorsku funkciju + za dodeljivanje radnika fabrici
operatorsku funkciju - za otputanje radnika sa navedenim jmbg-om
prijateljsku operatorsku funkciju << za upis sadraja niza u tekstualni tok
Klasi Radnik dodati sledee operatorske funkcije:
prijateljsku operatorsku funkciju >> za uitavanje podataka
prijateljsku operatorsku funkciju << za tampanje informacija o radniku
U funkciji main kreirati 3 objekta klase Radnik. Zatim napraviti objekat klase Fabrika i
demonstrirati upotrebu svih navedenih operatora.
Zadatak 14. Klasi Amfiteatar, kreiranoj u prethodnoj vebi, dodati sledee operatorske
funkcije:
operatorsku funkciju + za dodeljivanje slobodnog mesta studentu. Studente treba
rasporeivati popunjavanjem svakog drugog mesta poevi od zadnjeg reda
zadnje kolone. Ukoliko se na taj nain ne nae slobodno mesto (svako drugo
mesto je popunjeno), dodeliti prvo slobodno mesto poevi od zadnjeg reda
zadnje kolone.
operatorsku funkciju - za oslobaanje mesta sa zadatim koordinatama
prijateljsku operatorsku funkciju << za ispis naziva amfiteatra, prosenu ocenu
svih prisutnih studenata kao i indeks studenta sa najveom prosenom ocenom
Klasi Student dodati sledee operatorske funkcije:

prijateljsku operatorsku funkciju >> za uitavanje podataka


prijateljsku operatorsku funkciju << za tampanje informacija o studentu
U funkciji main kreirati vie objekta klase Student. Zatim napraviti objekat klase
Amfiteatar i demonstrirati upotrebu svih navedenih operatora.
.
Zadatak 15. Klasi Amfiteatar, kreiranoj u prethodnoj vebi, dodati sledee operatorske
funkcije:
operatorsku funkciju + za dodeljivanje slobodnog mesta studentu. Studente treba
rasporeivati popunjavanjem svakog drugog mesta poevi od prvog reda prve
kolone. Ukoliko se na taj nain ne nae slobodno mesto (svako drugo mesto je
popunjeno), dodeliti prvo slobodno mesto poevi od prvog reda prve kolone.
Takoe treba izvriti proveru da li je student sa tim brojem indeksa ve prisutan.
operatorsku funkciju - za oslobaanje mesta sa zadatim koordinatama
prijateljsku operatorsku funkciju << za ispis naziva amfiteatra i informacija o svim
prisutnim studentima
Klasi Student dodati sledee operatorske funkcije:
prijateljsku operatorsku funkciju >> za uitavanje podataka
prijateljsku operatorsku funkciju << za tampanje informacija o studentu
U funkciji main kreirati vie objekta klase Student. Zatim napraviti objekat klase
Amfiteatar i demonstrirati upotrebu svih navedenih operatora.
Zadatak 16. U klasu Picture, koja je kreirana u prvoj vebi, dodati:
operatorsku funkciju + koja preklapa sadraje dveju slika (u rezultujuoj slici
piksel na poziciji i,j dobija vrednost srednju vrednost piksela iz polaznih slika),
operatorsku funkciju = za dodelu jednog objekta klase Picture drugom.
Takoe, funkciju Brightness zameniti operatorom +=, funkciju za uitavanje sadraja
slike sa standardnog ulaza zameniti prijateljskom operatorskom funkcijom >> za
uitavanje sadraja slike iz tekstualnog toka podataka, a funkciju za prikaz sadraja
slike na standardni izlaz prijateljskom operatorskom funkcijom << za upis sadraja slike
u tekstualni tok podataka.
Dodati u program klasu Kolekcija koja od privatnih lanova ima maksimalan broj slika u
kolekciji i dinamiki niz tipa Image, a od javnih lanova funkcije za dodavanje slika u
kolekciju kao i operator za tampanje.
U funkciji main kreirati 2 objekta klase Picture reda 5x5, uitati njihove sadraje sa
standardnog ulaza, i testirati sve kreirane funkcije.
Kreirati jedan objekat tipa Kolekcija, dodati mu sve kreirane slike i odtampati ga na
standardni izlaz.

You might also like