7 Tutorijal 7

You might also like

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

Dr.

eljko Juri: Tehnike programiranja /kroz programski jezik C++/


Zadaci predvieni za rad na laboratorijskim vjebama uz pomo tutora

Tutorijal 7
Akademska godina 2013/14

Zadaci za Tutorijal 7.
NAPOMENA: Studenti bi trebali da razmisle o zadacima koji e se raditi na tutorijalu prije nego to
dou na tutorijal, tako da ve u startu imaju osnovne ideje kako rijeiti zadatke. U suprotnom, rad na
laboratorijskim vjebama nee biti produktivan. Zadaci koje studenti ne stignu uraditi za vrijeme
tutorijala, trebali bi samostalno uraditi kod kue.
1.

a) Napiite program koji trai od korisnika da unese niz reenica, pri emu se broj reenica
prethodno unosi sa tastature. Za svaku unesenu reenicu dinamiki alocirajte prostor, uz voenje
evidencije o adresi svake alocirane reenice u dinamikom nizu pokazivaa na poetke svake od
reenica. Nakon toga, treba ispisati unesene reenice sortirane u abecedni poredak (tanije
reeno, u rastui poredak po ASCII kodovima). Sortiranje obavite runo, nekim od jednostavnih
postupaka za sortiranje koji Vam je poznat (npr. BubbleSort, SelectionSort, itd.). Drugim
rijeima, nemojte koristiti gotove funkcije za sortiranje, poput funkcije sort iz biblioteke
algorithm.
b) Izmijenite prethodni program, ali tako to ete umjesto runog sortiranja koristiti funkciju
sort iz biblioteke algorithm, uz pogodno definiranu funkciju kriterija.

2.

Napiite generiku funkciju SortirajListu koja kao parametar prima neku listu (tj. objekat
tipa list) iji su elementi proizvoljnog tipa, ali koji se mogu uporeivati pomou operatora <.
Funkcija treba da kao rezultat vrati novu listu iji su elementi isti kao u listi navedenoj kao
parametar, ali sortirani u rastui poredak. Pri tome, sortiranje treba obaviti runo, ne koristei
nikakve biblioteke funkcije. Nije bitno da postupak sortiranja bude efikasan, bitno je samo da radi.
Napisanu funkciju demonstrirajte u testnom programu koji e za listu cijelih brojeva unesenu sa
tastature (broj elemenata se takoer zadaje putem tastature) kreirati novu sortiranu listu i ispisati
njen sadraj na ekran.

3.

Napiite generike funkcije Unija i Presjek koje kao parametre primaju dva skupa (tj.
objekta tipa set) proizvoljnog ali istog tipa elemenata, i koje kao rezultat daju novi skup koji
predstavlja njihovu uniju, odnosno presjek. Napisane funkcije demonstrirajte u testnom programu
koji nalazi uniju i presjek dva fiksna skupa iji su elementi stringovi.

4.

Napiite funkciju koja kao parametar prima neki string, a kao rezultat vraa taj string izvrnut
naopake, sa izbaenim razmacima (tj. ako je ulaz string Evo pada kia, izlazni rezultat treba da
bude string aikadapovE). Pri tome, funkcija treba da ima samo tri naredbe, od kojih je prva
deklariranje pomonog stringa, a trea naredba return, tako da sva logika funkcije treba biti
izvedena u jednoj jedinoj (drugoj) naredbi. Uputa: posluite se funkcijom remove copy, zatim
obrnutim iteratorima te umetaima (inserterima). Napiite i kratki testni program u kojem ete
testirati napisanu funkciju.

5.

Napiite funkciju IteriranaFunkcija koja kao parametar prima neku funkciju f koja prima
cijeli broj i vraa cijeli broj kao rezultat, te prirodan broj n. Ova funkcija kao rezultat treba vratiti
novu funkciju (nazovimo je g) takvu da vrijedi da je g(x) = f (n)(x) = f ( f ( f (... f (x)...))), gdje se
funkcija f primjenjuje na argument n puta uzastopno. Recimo, ukoliko je f neka funkcija koja
prima i vraa cjelobrojnu vrijednost, tada isjeak programa
auto g(IteriranaFunkcija(f, 10));
std::cout << g(5);

odnosno
std::cout << IteriranaFunkcija(f, 10)(5);

treba da proizvede isti rezultat kao i naredba


std::cout << f(f(f(f(f(f(f(f(f(f(5))))))))));

Napiite i testni program u kojem ete testirati ovu funkciju.


1

You might also like