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

Programiranje 2

Programski jezik C
Zadaci za praktikume
Milena Vujosevic - Janicic 2014

Sadr
zaj
1 Praktikum, 1. nedelja
1.1 Argumenti komandne linije . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
3

2 Praktikum, 2. nedelja
2.1 Datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Bitski operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
6
7

3 Praktikum, 3. nedelja
3.1 Organizacija koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8
8

4 Praktikum, 4. nedelja
4.1 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10
10

5 Praktikum, 5. nedelja
5.1 Pretraga i sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12

6 Praktikum, 6. nedelja
6.1 Sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14
14

7 Praktikum, 7. nedelja
7.1 Sortiranje . . . . . . . . .
7.2 Pokazivaci na funkcije . .
7.3 Matrice staticki alocirane .
7.4 Datoteke . . . . . . . . . .

.
.
.
.

17
17
17
17
18

8 Praktikum, 8. nedelja
8.1 Bibliotecke funkcije qsort, bsearch, lsearch i lfind . . . . . . . . . .
8.2 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20
20
22

9 Praktikum, 9. nedelja
9.1 Dinamicka alokacija memorije. Matrice . . . . . . . . . . . . . . . . . .

23
23

10 Praktikum, 10. nedelja


10.1 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 Dvostruko povezane liste . . . . . . . . . . . . . . . . . . . . . .

25
25
25

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.


SADRZAJ

10.1.2 Liste studenata . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

11 Praktikum, 11. nedelja


11.1 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.1 Kruzna lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.2 Stek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
27
27
28

12 Praktikum, 12. nedelja


12.1 Stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29
29

13 Praktikum, 13. nedelja


13.1 Stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31
31

14 Ve
zba za prakti
cni deo ispita

33

1
Cas

Praktikum, 1. nedelja
1.1

Argumenti komandne linije

Zadatak 1 Kao argumenti komandne linije zadaju se vlastita imena. Napisati program
koji proverava da li se meu imenima nalazi ime Milica.
Zadatak 2 Kao argumenti komandne linije zadaju se brojevi. Napisati program koji
racuna i ispisuje zbir tih brojeva. Na primer, ako se program pokrene sa
./a.out 1 2 3 4 5
Izlaz iz programa treba da bude
Zbir brojeva je 15
Zadatak 3 Napisati program koji proverava da li je meu argumentima komandne
linije prisutna opcija -a.

1.2

Datoteke

Zadatak 4 Ime ulazne i ime izlazne datoteke zadaju se kao argumenti komandne linije.
Napisati program koji sadrzaj ulazne datoteke prepisuje n puta (gde se n ucitava sa
tastature) u izlaznu datoteku. Na primer, ako je sadrzaj ulazne datoteke
Danas je lep dan\n
a broj n = 3 tada sadrzaj izlazne datoteke treba da bude
Danas je lep dan\nDanas je lep dan\nDanas je lep dan\n
Zadatak 5 Napisati program koji u datoteku prosti.txt upisuje sve proste brojeve u
datom intervalu kojima je zbir cifara slozen broj. Interval se zadaje ucitavanjem gornje
i donje granice (dva prirodna broja). Brojeve upisati u opadajucem poretku.
Zadatak 6 Napisati program koji broji
1. ukupan broj znakova
2. broj slova
3. broj cifara
3

1.2 Datoteke

4. broj linija
5. broj recenica
6. broj reci
u ulaznoj datoteci cije se ime zadaje kao argument komandne linije i rezultat upisuje u
datoteku izlaz.txt.
Zadatak 7 Ime datoteke se unosi sa standardnog ulaza (pretpostaviti da ime datoteke
nije duze od 20 karaktera). Napisati program koji broji pojavljivanja za svako od slova
engleske abecede u datoteci i stampa rezultat na standardni izlaz.
Zadatak 8 Napisati program koji broji pojavljivanja za svaku cifru teksta datoteke
cije se ime zadaje kao argument komandne linije i stampa koliko se puta koja cifra
pojavila, koja se cifra pojavila najveci broj puta i koja se cifra pojavila najmanji broj
puta. Ukoliko ima vise cifara koje su se pojavila isti najveci ili najmanji broj puta,
odstampati svaku od njih. Ukoliko ima cifara koje se nisu pojavile, odstampati i te
cifre. Na primer, ako ulazna datoteka sadrzi sledeci tekst
Cao, kako si?
Ovo je moj broj mobilnog telefona: 064 1234 565
Moj fiksni broj je 011 8765 321
Izlaz iz programa treba da bude:
broj pojavljivanja cifre 0 je 2
broj pojavljivanja cifre 1 je 4
broj pojavljivanja cifre 2 je 2
broj pojavljivanja cifre 3 je 2
broj pojavljivanja cifre 4 je 2
broj pojavljivanja cifre 5 je 3
broj pojavljivanja cifre 6 je 3
broj pojavljivanja cifre 7 je 1
broj pojavljivanja cifre 8 je 1
broj pojavljivanja cifre 9 je 0
Najveci broj puta, 4 puta, pojavila se cifra 1.
Najmanji broj puta, 1 put, pojavila se cifra 7.
Najmanji broj puta, 1 put, pojavila se cifra 8.
Cifra 9 nije se pojavila ni jednom.
Zadatak 9 Napisati program koji u datoteku Paskal.txt uspisuje Paskalov trougao
za broj N koji se unosi sa standardnog ulaza. Na primer, za N=7, program u datoteku
treba da upise sledeci sadrzaj:
1
1
1
1

1
2

1
3

1
4

1.2 Datoteke

1
1
1

4
5

10
15

6
20

4
10

1
5
15

1
6

2
Cas

Praktikum, 2. nedelja
2.1

Datoteke

Zadatak 10 Imena ulazne i izlazne datoteke zadaju se kao argumenti komandne linije.
Napisati program kojim se sadrzaj ulazne datoteke prepisuje tako da se u izlaznu datoteku najpre prepisuje sadrzaj druge polovine datoteke, a zatim sadrzaj prve polovine
datoteke. Na primer, ako je sadrzaj ulazne datoteke Danas je lep dan sadrzaj izlazne
datoteke treba da bude lep danDanas je
Zadatak 11 Imena ulazne i izlazne datoteke zadaju se kao argumenti komandne linije. Napisati program kojim se sadrzaj ulazne datoteke prepisuje tako da se u izlaznu
datoteku upisuje najpre prvi karakter ulazne datoteke, zatim poslednji karakter ulazne
datoteke, zatim drugi karakter ulazne datoteke, zatim pretposlednji karakter ulazne datoteke i tako redom, jedan karakter sa pocetka pa jedan karakter sa kraja datoteke. Na
primer, ako je sadrzaj ulazne datoteke Danas je lep dan. sadrzaj izlazne datoteke
treba da bude D.annaads pjeel
Zadatak 12 Imena ulazne i izlazne datoteke zadaju se kao argumenti komandne linije.
Ukoliko program nije pokrenut na ispravan nacin, tj. ukoliko nedostaju imena ulazne i
izlazne datoteke, onda se podrazumeva da su imena ulazne i izlazne datoteke ulaz.txt
i izlaz.txt Napisati program kojim se sadrzaj ulazne datoteke prepisuje tako da se
u izlaznu datoteku upisuje najpre prvi red ulazne datoteke, zatim poslednji red ulazne
datoteke, zatim drugi red ulazne datoteke, zatim pretposlednji red ulazne datoteke i tako
redom, jedan red sa pocetka pa jedan red sa kraja datoteke. Na primer, ako je sadrzaj
ulazne datoteke
Danas nam je divan dan,
divan dan, divan dan,
nasoj Ivi rodjendan,
rodjendan, rodjendan.
Zivela, zivela i srecna nam bila!
sadrzaj izlazne datoteke treba da bude
Danas nam je divan dan,
6

2.2 Bitski operatori

Zivela, zivela i srecna nam bila!


divan dan, divan dan,
rodjendan, rodjendan.
nasoj Ivi rodjendan,

2.2

Bitski operatori

Zadatak 13 Napisati funkciju int SumaPrvogIPoslednjegBita(unsigned x) koja


izracunava sumu prvog i poslednjeg bita broja x. Napisati program koji testira rad
ove funkcije. Broj x se zadaje kao argument komandne linije.
Zadatak 14 Sastaviti funkciju int Broj01(unsigned short n) koja za dati broj n vraca 1
ako u njegovom binarnom zapisu ima vise jednica nego nula, a inace vraca 0. Napisati
program koji tu funkciju testira za broj koji se zadaje sa standardnog ulaza.
Zadatak 15 Napisati funkciju koja broji koliko se puta kombinacija 11 (dve uzastopne
jedinice) pojavljuje u binarnom zapisu celog broja x.
Zadatak 16 Napisati funkciju koja na osnovu neoznacenog broja x formira nisku s
koja sadrzi heksadekadni zapis broja x, koristeci algoritam za brzo prevoenje binarnog u heksadekadni zapis (svake 4 binarne cifre se zamenjuju jednom odgovarajucom
heksadekadnom cifrom).
Zadatak 17 Napisati funkciju koja za dva data broja x i y invertuje u podatku x one
bitove koji se poklapaju sa odgovarajucim bitovima u broju y. Ostali bitovi ostaju nepromenjeni.
Zadatak 18 Napisati program koji sa standardnog ulaza ucitava pozitivan ceo broj, a
na standardni izlaz ispisuje vrednost tog broja sa razmenjenim vrednostima bitova na
pozicijama i, j. Pozicije i, j se ucitavaju kao parametri komandne linije. Smatrati da je
krajnji desni bit binarne reprezentacije 0-ti bit. Pri resavanju nije dozvoljeno koristiti
pomocni niz niti aritmeticke operatore +,-,/,*,%.

3
Cas

Praktikum, 3. nedelja
3.1

Organizacija koda

Obratiti paznju na zadatke za vezbu:


http://poincare.matf.bg.ac.rs/~milena/OPcasovi/p2_baza_zadataka.pdf
Zadatak 19 Napisati malu biblioteku za rad sa kompleksnim brojevima:
1. Definisati strukturu KompleksniBroj koja predstavlja kompleksni broj reprezentovan svojim realnim i imaginarnim delom.
2. Napisati funkciju koja ucitava kompleksni broj sa standardnog ulaza.
3. Napisati funkciju koja ispisuje kompleksni broj na standardni izlaz.
4. Napisati funkciju koja sabira dva kompleksna broja.
5. Napisati funkciju koja oduzima dva kompleksna broja.
6. Napisati funkciju koja mnozi dva kompleksna broja.
7. Napisati funkciju koja deli dva kompleksna broja.
8. Napisati funkciju koja mnozi kompleksni broj realnim.
9. Napisati funkciju koja sabira kompleksni i realni broj.
10. Napisati funkciju koja odreuje konjugat datog kompleksnog broja.
11. Napisati funkciju koja odreuje moduo datog kompleksnog broja.
12. Napisati funkciju koja odreuje argument datog kompleksnog broja.
Sve vreme, paralelno sa razvojem funkcija, pisati i glavni program koji ih testira.
Razdeliti program pravilno na datoteke kompleksni.c, kompleksni.h i test-kompleksni.c.
Prevoenje: gcc -o test-kompleksni kompleksni.c test-kompleksni.c
ili
gcc -c kompleksni.c
gcc -c test-kompleksni.c
gcc -o test-kompleksni kompleksni.o test-kompleksni.o
8

3.1 Organizacija koda

Zadatak 20 Napraviti biblioteku za rad sa skupovima celih brojeva (skupovi imaju najvise 1000 elemenata).
1. Definisati strukturu podataka za reprezentovanje skupova (koristiti sortirane nizove).
2. Napisati funkcije za ucitavanje i ispis skupova.
3. Napisati funkciju koja proverava da li skup sadrzi dati element.
4. Napisati funkciju koja odreuje presek dva skupa.
5. Napisati funkciju koja odreuje uniju dva skupa.
6. Napisati funkciju koja odreuje razliku dva skupa
Zadatak 21 Za predstavljanje velikog broja uvesti tip
#define MAX_CIFRE 100
enum ZNAK {PLUS, MINUS};
typedef struct broj
{
int cifre[MAX_CIFRE];
int duzina;
ZNAK znak;
} VelikiBroj;
Napisati funkciju koja izracunava
da li su dva velika broja jednaka;
veci od dva velika broja;
zbir dva velika broja;
razliku dva velika broja;
mnozenje velikog broja cifrom;
mnozenje dva velika broja;
celobrojno deljenje dva velika broja;
faktorijel prirodnog broja tacno u svakoj cifri.
Organizovati kod na odgovarajuci nacin po datotekama.
Zadatak 22 Tip polinom je definisan na sledeci nacin:
#define STEPEN 10
typedef struct Polinom
{
unsigned char stepen;
short koef[STEPEN+1];
}
polinom;
9

3.1 Organizacija koda

10

Sastaviti funkciju koja izracunava n-ti izvod ovako definisanog polinoma i program
koji testira rad te funkcije za polinom ciji su stepen i koeficijenti zadati u datoteci
polinom.txt.

10

4
Cas

Praktikum, 4. nedelja
4.1

Rekurzija

Zadatak 23 Napisati program koji (a) iterativno (b) rekurzivno racuna n-ti Fibonacijev
broj, pri cemu se broj n zadaje sa standardnog ulaza. Uporediti brzine izvrsavanja ova
dva programa za n=5, n=55 i n=95.
Zadatak 24 Napisati program u kome se koriscenjem rekurzivne funkcije izracunava
NZD brojeva x i y.
(
y,
x=0
nzd(x, y) =
nzd(y%x, x), x! = 0
Zadatak 25 Napisati rekurzivnu funkciju koja ispisuje broj koji se pise istim ciframa
ali u obrnutom poretku. Broj se unosi sa standardnog ulaza. Napisati program koji
testira rad ove funkcije.
Zadatak 26 Napisati rekurzivnu funkciju koja izracunava broj cifara njenog argumenta i program koji tu funkciju testira za vrednost koja se unosi sa standardnog ulaza.
Zadatak 27 Napisati rekurzivnu funkciju koja vraca odgovor na pitanje da li je broj
cifara njenog argumenta paran (ne koristeci prebrojavanje broja cifara broja) i program
koji tu funkciju testira za vrednost koja se unosi sa standardnog ulaza.
Zadatak 28 Napisati rekurzivnu funkciju koja izracunava sumu bitova datog neoznacenog
broja i program koji tu funkciju testira za broj koji se unosi sa standardnog ulaza.
Zadatak 29 Napisati rekurzivnu funkciju koja sabira dekadne cifre datog celog broja
x. Napisati program koji testira rad ove funkcije.
Zadatak 30 Napisati rekurzivnu funkciju kojom se proverava da li je broj n prost broj.
Napisati program koji testira rad ove funkcije.
Zadatak 31 Napisati rekurzivnu funkciju kojom se racuna suma delilaca datog broja.
Napisati program koji testira rad ove funkcije.

11

4.1 Rekurzija

12

Zadatak 32 Napisati rekurzivnu funkciju koja izracunava vrednost binomnog koeficienta. Napisati program koji testira rad ove funkcije.
Zadatak 33 Napisati rekurzivne funkcije koje ispisuju elemente datog niza s leva na
desno, odnosno s desna na levo i program koji te funkcije testira za vrednosti koje se
ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. Pretpostaviti
da u datoteci nije zadato vise od 100 brojeva.
Zadatak 34 Napisati rekurzivnu funkciju koja sabira niz celih brojeva i program koji
tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.
Zadatak 35 Napisati rekurzivnu funkciju koja proverava da li je data niska karaktera palindrom i program koji tu funkciju testira za nisku koja se zadaje kao argument
komandne linije.
Zadatak 36 Napisati rekurzivnu funkciju koja proverva da li su svi elementi datog
niza jednaki datom broju i program koji tu funkciju testira za vrednosti koje se zadaju
sa standardnog ulaza.
Zadatak 37 Definisati strukturu Tacka koju odlikuju x i y kooridinate tacke u ravni.
Napisati rekurzivnu funkciju koja proverava da li postoji tacka u nizu koje je jednaka
zadatoj tacki. Napisati i program koji tu funkciju testira za vrednost tacke koji se zadaje
sa standardnog ulaza dok se niz tacaka ucitava iz datoteke Tacke.txt. Pretpostaviti
da u datoteci nije zadato vise od 100 tacaka.
Zadatak 38 Napisati rekurzivnu funkciju koja izracunava maksimum niza brojeva i
program koji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.
Zadatak 39 Napisati rekurzivnu funkciju koja izracunava minimum niza brojeva i program koji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.

12

5
Cas

Praktikum, 5. nedelja
5.1

Pretraga i sortiranje

Zadatak 40 Napisati funkciju koja rekurzivno implementira algoritam interpolacione


pretrage i program koji ovu funkciju testira za brojeve koji se unose sa standardnog
ulaza (pretpostaviti da niz brojeva koji se unosi nije duzi od 1000 elemenata).
Zadatak 41 U datom nizu brojeva pronaci dva koja su na najmanjem rastojanju (uputstvo: prvo sortirati niz).
Zadatak 42 Napisati program koji pronalazi broj koji se najvise puta pojavljivao u
datom nizu (uputstvo: prvo sortirati niz a zatim naci najduzu sekvencu jednakih elemenata).
Zadatak 43 Napisati funkciju koja sortira slova unutar niske karaktera. Napisati program koji proverava da li su dve niske karaktera anagrami. Dve niske su anagrami ako
se sastoje od istog broja istih karaktera. Na primer, niske anagram i ramgana jesu
anagrami, dok anagram i angrm nisu.
Zadatak 44 Napisati funkciju koja odreuje nulu funkcije cos(x) na intervalu [0, 2]
metodom polovljenja intervala (uputstvo: analogno binarnoj pretrazi).
Zadatak 45 Napisati program koji obezbeuje da se unese niz karaktera (manje od
100 karaktera) i da se onda on prikaze sortiran i to tako da svako slovo koje se nae
na parnoj poziciji sortiranog niza bude pretvoreno u odgovarajuce veliko, a svako slovo
koje se nalazi na neparnoj poziciji sortiranog niza bude pretvoreno u odgovarajuce malo
slovo. Na primer, ako se unese niz danas je lep dan izlaz iz programa treba da bude:
aAaDdEjLnNs
Zadatak 46 Napisati funkciju koja proverava da li u datom nizu postoje dva elementa
kojima je zbir zadati ceo broj (uputstvo: prvo sortirati niz).
Zadatak 47 Napisati funkciju koja prima dva sortirana niza, i na osnovu njih pravi
novi sortirani niz koji koji sadrzi elemente oba niza
int merge(int *niz1, int dim1, int *niz2, int dim2, int *niz3, int dim3);
13

5.1 Pretraga i sortiranje

14

Treca dimenzija predstavlja velicinu niza u koji se smesta rezultat. Ako je ona manja
od potrebne duzine, funkcija vraca -1, kao indikator neuspeha, inace vraca 0.

14

6
Cas

Praktikum, 6. nedelja
6.1

Sortiranje

Zadatak 48 Napisati funkcije koje sortiraju niz struktura tacaka na osnovu


1. njihovog rastojanja od koordinatnog pocetka.
2. x koordinate date tacke.
3. y koordinate date tacke.
Napisati program koji ucitava niz tacaka iz datoteke cije se ime zadaje kao argument
komandne linije, i u zavisnosti od prisutnih opcija u komandnoj liniji, sortira tacke po
jednom od prethodna tri kriterijuma i rezultat upisuje u datoteku cije se ime zadaje kao
drugi argument komandne linije. Na primer, ako se program pokrene sa
a.out -x tacke.txt sorttacke.txt
tada program treba da sortira tacke iz datoteke tacka.txt na osnovu x koordinate i da
sortiran rezultat upise u datoteku sorttacke.txt. U ulaznoj datoteci nije zadato vise
od 100 tacaka.
Zadatak 49 Napisati rekurzivnu implementaciju bubble sort algoritma i program koji
to testira.
Zadatak 50 Napisati rekurzivnu implementaciju shell sort algoritma i program koji to
testira.
Zadatak 51 Napisati nerekurzivnu implementaciju quick sort algoritma i program koji
to testira.
Zadatak 52 Kao argumenti komandne linije zadaju se imena dve datoteke koje sadrze
sortirane cele brojeve. Formirati datoteku Rezultat.txt koja sadrzi sortirane brojeve
obe datoteke. Na primer, ako je sadrzaj prve datoteke 1 3 5 7 9 11 a sadrzaj druge
datoteke 2 3 4 6 7 10 12 tada sadrzaj datoteke Rezultat.txt treba da sadrzi brojeve 1
2 3 3 4 5 6 7 7 9 10 11 12.
Zadatak 53 Definisana je struktura podataka
15

6.1 Sortiranje

16

typedef struct dete


{
char ime[MAX_IME];
char prezime[MAX_IME];
unsigned godiste;
} Dete;
Napisati funkciju koja srotira niz dece po godistu, a kada su deca istog godista, tada ih
sortirati leksikografski po prezimenu i imenu. Napisati program koji ucitava podatke o
deci koji se nalaze u datoteci cije se ime zadaje kao prvi argument komandne linije,
sortira ih i sortirani niz upisuje u datoteku sije se ime zadaje kao drugi argument
komandne linije. Pretpostaviti da u ulaznoj datoteci nisu zadati podaci o vise od 100
dece. Na primer, ako je ulazna datoteka
Petar Petrovic 2007
Milica Antonic 2008
Ana Petrovic 2007
Ivana Ivanovic 2009
Dragana Markovic 2010
Marija Antic 2007
sortirana datoteka treba da bude
Marija Antic 2007
Ana Petrovic 2007
Petar Petrovic 2007
Milica Antonic 2008
Ivana Ivanovic 2009
Dragana Markovic 2010

//najmanje godiste, prezime na A


//najmanje godiste, prezime Petrovic, ime na slovo A
//najmanje godiste, prezime Petrovic, ime na slovo P
//sledece najmanje godiste
//...
//...

Zadatak 54 Napisati funkciju koja sortira niz velikih brojeva i program koji ucitava
niz velikih brojeva iz datoteke veliki_brojevi.txt i upisuje sortirane velike brojeve u
datoteku sortirani_brojevi.txt. Pretpostaviti da datoteka veliki_brojevi.txt ne
sadrzi vise od 100 velikih brojeva (ukoliko sadrzi vise od 100 brojeva prijaviti gresku),
kao i da nijedan veliki broj nema vise od 100 cifara. Za predstavljanje velikih brojeva
koristiti strukturu
#define MAX_CIFRE 100
enum ZNAK {PLUS, MINUS};
typedef struct broj
{
int cifre[MAX_CIFRE];
int duzina;
ZNAK znak;
} VelikiBroj;
Zadatak 55 U datoteci studenti.txt nalaze se za svakog studenta redom prezime i
ime. Na postojeca prezimena i imena dodati svoje ime i prezime. Zatim iz ove datoteke
16

6.1 Sortiranje

17

ucitati studente, sortirati ih u alfabetskom poretku po prezimenu, a u slucaju istog prezimena po imenu. Tako sortirana prezimena i imena upisati u datoteku sortirano.txt.

17

7
Cas

Praktikum, 7. nedelja
7.1

Sortiranje

Zadatak 56 Napisati funkciju koja sortira niz niski po broju suglasnika u niski, ukoliko
reci imaju isti broj suglasnika tada po duzini niske, a ukoliko su i duzine jednake tada
leksikografski. Napisati program koji testira ovu funkciju za niske koje se zadaju u
datoteci niske.txt. Na primer, za niz niski
ana petar an{\d}ela milos nikola aleksandar ljubica matej milica
izlaz treba da bude
ana matej milos petar milica nikola an{\d}ela ljubica aleksandar.
Pretpostaviti da u nizu nema vise od 100 elemenata, kao da svaka niska sadrzi najvise
20 karaktera.

7.2

Pokaziva
ci na funkcije

Zadatak 57 Napisati funkciju koja izracunava limes funkcije f (x) u tacki a. Adresa
funkcije f ciji se limes racuna se prenosi kao parametar funkciji za racunanje limesa.
Limes se racuna sledecom aproksimacijom (vrednosti n i a uneti sa standardnog ulaza
kao i ime funkcije):
1
limxa f (x) = limn f (a + )
n
Zadatak 58 Napisati funkciju koja odreuje integral funkcije f (x) na intervalu [a, b].
Adresa funkcije f se prenosi kao parametar. Integral se racuna prema formuli:
Z b
a

f (x) = h (

f (a) + f (b)
+ ni=1 f (a + i h))
2

Vrednosti n, a i b uneti sa standardnog ulaza kao i ime funkcije, h = (b a)/n.

7.3

Matrice stati
cki alocirane

Zadatak 59 Napisati funkciju koja izracunava redni broj vrste u kojoj se nalazi maksimalni element matrice. Napisati program koji testira ovu funkciju za vrednosti koje se
18

7.4 Datoteke

19

zadaju sa standardnog ulaza pri cemu se prvo unose dimenzije matrice a zatim elementi
matrice. Pretpostaviti da je maksimalna dimenzija matrice 10x10. Testirati program
koriscenjem preusmeravanja.
Zadatak 60 Napisati funkciju koja izracunava redni broj kolone ciji je zbir minimalan.
Napisati program koji testira ovu funkciju za vrednosti koje se zadaju sa standardnog
ulaza pri cemu se prvo unose dimenzije matrice, a zatim elementi matrice. Pretpostaviti da je maksimalna dimenzija matrice 10x10. Testirati program koriscenjem
preusmeravanja.
Zadatak 61 Napisati funkciju koja menja sadrzaj matrice tako sto se elementi ispod
glavne dijagonale dupliraju, elementi iznad glavne dijagonale polove, dok elementi na
glavnoj dijagonali ostaju isti. Napisati program koji testira ovu funkciju za vrednosti
koje se ucitavaju iz datoteke matrica.txt pri cemu se u datoteci nalaze prvo dimenzije
matrice, a zatim redom elementi matrice. Pretpostaviti da je maksimalna dimenzija
matrice 10x10.
Zadatak 62 Napisati funkciju koja izracunava zbir apsolutnih vrednosti ispod sporedne
dijagonale matrice. Napisati program koji testira ovu funkciju za vrednosti koje se
ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije pri cemu se u
datoteci nalaze prvo dimenzije matrice, a zatim redom elementi matrice. Pretpostaviti
da je maksimalna dimenzija matrice 10x10.

7.4

Datoteke

Zadatak 63 Datoteka u prvom redu sadrzi broj studenata, a u svakom narednom informacije o jednom studentu: ime, prezime, smer, broj ESP bodova. Napisati program koji
iz te datoteke, cije se ime navodi kao prvi argument komandne linije, vrsi ucitavanje
liniju po liniju i ispisuje inforamciju o studentu koji je sakupio najvise bodova u datoteku sa imenom kandidatZaStipendiju.txt. Ne koristiti pomocan niz.
Zadatak 64 Napisati funkciju
int gettag(FILE *f, char *s, int size)
koja ucitava sledecu HTML etiketu iz datoteke koja je predstavljena fajl-pokazivacem
f, u string s, ali ne vise od size karaktera. Funkcija vraca 1 ako je uspela da procita
narednu etiketu, ili 0 za neuspeh. Napisati program koji ovu funkciju testira za datoteku
cije se ime zadaje kao argument komandne linije.
Zadatak 65 (a) Napisati funkciju koja ispituje da li je jedna rec prefiks druge reci.
(b) Napisati program koji za svaku liniju teksta datoteke cije se ime zadaje kao prvi
argument komandne linije proverava da li je rec koja je zadata u prvoj liniji datoteke njen prefiks i stampa odgovarajucu poruku u datoteku cije se ime zadaje kao
drugi argument komandne linije. Pretpostaviti da linija teksta nije duza od 100
karaktera.
Na primer, ako datoteka ima sledeci sadrzaj
19

7.4 Datoteke

20

Ana
Anagrami su lepi.
Danas je lep dan!
Program treba da kreira datoteku u koju ce da upise:
Ana jeste prefiks linije
Anagrami su lepi.
Ana nije prefiks linije
Danas je lep dan!
Zadatak 66 Datoteka ocene.txt sadrzi imena i prezimena studenata i njihove ocene.
Napisati program koji za svakog studenta izracunava i ispisuje prosecnu ocenu. Na
primer, ako datoteka sadrzi:
Pera Peric 8 9 9
Mika Mikic 10 6 7 7 8
Ana Anic 10 10 9 10
program treba da ispise:
Pera Peric
Mika Mikic
Ana Anic

8.67
7.60
9.75

Zadatak 67 Napisati C program koji iz datoteke dat.txt cita rec po rec i na standardni izlaz ispisuje reci koje su duze od N, ukoliko je prilikom pokretanja programa
navedena opcija -d, ili reci koje su krace od N, ukoliko je prilikom pokretanja programa
navedena opcija -k. Broj N se zadaje kao argument komandne linije.

20

8
Cas

Praktikum, 8. nedelja
8.1

Bibliote
cke funkcije qsort, bsearch, lsearch i lfind

Zadatak 68 Napisati program koji sa standardnog ulaza ucitava dva stringa, s i t


(duzine manje od 20 karaktera), sortira nizove njihovih karaktera (biblioteckom qsort
funkcijom) i ispituje i stampa da li su s i t anagrami (npr. vrata, vatra).
Zadatak 69 Napisati program koji sortira opadajuce niz brojeva koristeci bibliotecku
funkciju qsort.
Zadatak 70 Napisati program koji sa standardnog ulaza ucitava prvo ceo broj n (n <=
10) a zatim niz S od n stringova (maksimalna duzina stringa je 20 karaktera). Sortirati
niz S (biblioteckom funkcijom qsort) i proveriti da li u njemu ima identicnih stringova.
Zadatak 71 Napisati program u kome se prvo inicijalizuje staticki niz struktura osoba sa clanovima ime i prezime (ureen u rastucem poretku prezimena) sa manje od
10 elemenata, a zatim se ucitava jedan karakter i pronalazi (biblioteckom funkcijom
bsearch) i stampa jedna struktura iz niza osoba cije prezime pocinje tim kakrakterom
(ako takva osoba postoji).
Zadatak 72 Definisana je struktura:
typedef struct
{
int dan;
int mesec;
int godina;
} Datum;
Napisati funkciju koja poredi dva datuma i program koji ucitava datume preko standardnog ulaza (ne vise od 100 datuma), sortira ih pozivajuci funkciju qsort iz standardne
biblioteke i potom sa standardnog ulaza ucitava datum i pozivanjem funkcije bsearch
iz standardne biblioteke proverava da li takav datum postoji meu prethodno unetim
datumima.
Zadatak 73 Struktura artikal je definisana na sledeci nacin
21

8.1 Bibliote
cke funkcije qsort, bsearch, lsearch i lfind

22

typedef struct _artikal {


long bar_kod;
char ime[MAX_IME];
float pdv;
float cena;
} artikal;
1. Inicijalizovati niz struktura artikal tako da sadrzi sledece podatke:
{{123456, "cokolada", 18.0, 100.0}, {234567, "mleko", 12.0, 70.0},
{123567, "kafa", 18.0, 116.0}, {987654, "kikiriki", 18.0, 60.0},
{222333,"cips", 18.0, 50.0}, {444555,"smoki", 18.0, 30.0},
{666888,"banana", 18.0, 88.0}, {369258,"jabuka", 18.0, 115.0}}
Napisati funkciju koja stampa vrednosti niza artikala.
2. Koristeci funkciju lfind iz standardne biblioteke proveriti da li neki artikal pripada nizu artikala. Pretrazivanje vrsiti

po bar kodu
po ceni
po pdv-u
po imenu
za komletnu strukturu (proveriti da li {666888,"banana", 18.0, 88.0} i
{123999,"slag", 18.0, 45.0} pripadaju nizu artikala).

Nakon svakog pretrazivanja odstampati sadrzaj celog niza.

3. Koristeci funkciju lsearch iz standardne biblioteke proveriti da li {666888,"banana", 18.0, 88.0


i {123999,"slag", 18.0, 45.0} pripadaju nizu artikala. Nakon svakog pretrazivanja odstampati sadrzaj celog niza.
4. Sortirati niz struktura artikal koristeci funkciju qsort iz standardne biblioteke

po
po
po
po

bar kodu
ceni
pdv-u
imenu

5. Koristeci funkciju bsearch proveriti da li neki artikal koji se pretrazuje po

po
po
po
po

bar kodu
ceni
pdv-u
imenu

pripada odgovarajucem sortiranom nizu (na primer, ako je niz artikala sortiran
po imenima artikala, onda proveriti da li nizu pripada artikal banana i artikal
kruska, ako je niz sortiran po cenama, onda proveriti da li postoji artikal sa
cenom 88 i artikal sa cenom 200).
22

8.2 Rekurzija

8.2

23

Rekurzija

Zadatak 74 Napisati rekurzivnu funkciju koja leksikografski poredi dve niske karaktera
i program koji tu funkciju testira za vrednosti koje se zadaju kako argumenti komandne
linije.
Zadatak 75 Napisati rekurzivnu funkciju koja prevodi dati dekadni broj u niz binarnih cifara datog broja i program koji tu funkciju testira za vrednosti koje se unose sa
standardnog ulaza.
Zadatak 76 Napisati rekurzivnu funkciju koja izracunava sumu bitova datog neoznacenog
broja i program koji tu funkciju testira za broj koji se unosi sa standardnog ulaza.
Zadatak 77 Napisati rekurzivnu funkciju koja obrce datu nisku karaktera i program
koji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.
Zadatak 78 Napisati rekurzivnu funkciju koja izracunava skalarni proizvod dva data
vektora. i program koji tu funkciju testira za vrednosti koje se unose sa standardnog
ulaza.
Zadatak 79 Napisati rekurzivnu funkciju koja racuna broj pojavljivanja elementa x u
nizu a duzine n.

23

9
Cas

Praktikum, 9. nedelja
9.1

Dinami
cka alokacija memorije. Matrice

Zadatak 80 Napisati program koji omogucva unos dimenzije kvadratne matrice i unos
elemenata matrice sa standardnog ulaza. Napisati funkciju koja racuna
1. zbir elemenata matrice dimenzija n n.
2. proizvod elemenata ispod/iznad glavne dijagonale matrice dimenzija n n.
3. zbir elemenata ispod/iznad glavne dijagonale matrice dimenzija n n.
Program treba da testira rad ovih funkcija i odstampa odgovarajuce vrednosti na standardni izlaz.
Zadatak 81 U datoteci je zapisana matrica i to tako sto se u prvom redu nalazi dva
broja koji predstavljaju broj vrsta n i broj kolona m matrice. Dalje se u svakom redu
datoteke kojih ima n nalazi po m brojeva. Ucitati date brojeve iz datoteke u odgovarajucu
matricu. Napisati funkcije koje izracunavaju
1. zbir elemenata matrice
2. zbir elemenata matrice ispod glavne dijagonale
3. zbir kvadrata elemenata matrice
4. zbir trecih stepena elemenata matrice iznad glavne dijagonale
5. zbir elemenata za svaku vrstu matrice
6. redni broj vrste sa najvecim/najmanjim zbirom
7. zbir elemenata za svaku kolonu matrice
8. redni broj kolone sa najvecim/najmanjim zbirom
9. vrednost najveceg elementa na sporednoj dijagonali
10. indeks kolone koja sadrzi najveci element matrice
24

9.1 Dinami
cka alokacija memorije. Matrice

25

11. broj negativnih elemenata matrice


Program treba da izracuna sve ove podatke i da ih upise na kraj datoteke. Na primer,
matrica dimenzija 3x4 se zadaje na sledeci nacin:
3
1
2
3

4
2 3 4
3 4 5
4 5 6

Zadatak 82 Napisati funkciju koja omogucava racunanje proizvoda dve kvadratne matrice dimenzija nn. Napisati program koji omogucava unosenje dve kvadratne matrice
i stampanje proizvoda te dve matrice.

25

10
Cas

Praktikum, 10. nedelja


10.1

Liste

Zadatak 83 Napisati program koji formira sortirane liste L1 i L2. Napisati zatim
funkciju koja
formira listu L3 koja sadrzi sve elemente koji pripadaju datoj listi L1, a ne pripadaju datoj listi L2.
formira listu L3 koja sadrzi elemente koji pripadaju i datoj listi L1, i datoj listi
L2.
Obezbediti da program testira rad ovih funkcija.
Zadatak 84 Napisati funkciju koja obrce datu jednostruko povezanu listu. Funkcija ne
treba da kreira nove cvorove, vec da samo postojece cvorove obrnuto rasporedi. Napisati
program koji testira ovu funkciju.
Zadatak 85 Neka su date dve jednostruko povezane liste L1 i L2. Napisati funkciju
koja od tih lista formira jednu novu listu koja sadrzi alternirajuce rasporeene elemente
lista L1 i L2 (prvi element iz L1, prvi element iz L2, drugi element L1, drugi element
L2...itd.). Ne formirati nove cvorove, vec samo postojece cvorove rasporediti u jednu
listu. Napisati i program koji testira ovu funkciju.
10.1.1

Dvostruko povezane liste

Zadatak 86 Ime datoteke se zadaje kao argument komandne linije. Sadrzaj datoteke
su celi brojevi. Napisati program koji na osnovu sadrzaja datoteke formira dvostruko
povezanu listu i onda ispisuje njen sadrzaj od prvog do poslednjeg elementa, onda od
pretposlednjeg do drugog elementa, zatim od treceg do n-3 elementa (gde je n broj elemenata u listi), zatim od n-4 do 4 elementa i tako redom.
Zadatak 87 Neka je data dvostruko povezana lista L. Napisati program koji na efikasan
nacin ispisuje elemente liste u redosledu narednih brojeva koji oznacavaju redni broj elementa u listi: 1, 3, 2, 4, 5, 7, 6, 8, ..., 8, 6, 7, 5, 4, 2, 3, 1. Na primer, za listu koja
ima 5 elemeneta, treba da se ispisu redom vrednosti corova kojima odgovaraju redni
brojevi 1, 3, 2, 4, 5, 5, 4, 2, 3, 1.
26

10.1 Liste

10.1.2

27

Liste studenata

Zadatak 88 Napisati funkciju koja formira listu studenata tako sto se prvo unosi broj
indeksa i ukoliko je on razlicit od nule onda se unose ime i prezime, a u suprotnom
se prekida formiranje liste. Za svakog studenta pamtiti ime, prezime i broj indeksa.
Ispisati zatim tako formiranu listu i potom osloboditi memoriju.
typedef struct _Element
{
unsigned broj_indeksa;
char ime[20];
char prezime[20];
struct _Element *sledeci;
} Element;
Zadatak 89 Napisati funkciju koja formira listu studenata tako sto se podaci o studentima ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. U svakom
redu datoteke nalaze se podaci o studentu i to broj indeksa, ime i prezime. Napisati
funkciju koja odreuje da li neki student (koji se trazi na osnovu broja indeksa, pri
cemu se broj indeksa zadaje sa standardnog ulaza) pripada listi ili ne. Ispisati zatim
odgovarajucu poruku i osloboditi memoriju koju je data lista zauzimala.

27

11
Cas

Praktikum, 11. nedelja


11.1

Liste

Zadatak 90 Napisati program koji prebrojava pojavljivanja etiketa (bez atributa) HTML
datoteke cije se ime zadaje kao argument komandne linije. Sadrzaj rezultujuce liste
ispisati na standardni izlaz. Za forimrianje liste koristiti strukturu:
typedef struct _Element
{
unsigned broj_pojavljivanja;
char etiketa[20];
struct _Element *sledeci;
} Element;
Zadatak 91 Data je datotka brojevi.txt koja sadrzi cele brojeve, po jedan u svakom
redu.
1. Napisati funkciju koja iz zadate datoteke ucitava brojeve i smesta ih u listu.
2. Napisati funkciju koja u jednom prolazu kroz zadatu listu celih brojeva pronalazi
maximalan strogo rastuci podniz.
3. Koristeci funkcije pod a) i b) napisati program koji u datoteku Rezultat.txt
upisuje naeni strogo rastuci podniz.
11.1.1

Kru
zna lista

Zadatak 92 Grupa od n plesaca (na cijim kostimima su u smeru kazaljke na satu


redom brojevi od 1 do n) izvodi svoju plesnu tacku tako sto formiraju krug iz kog najpre
izlazi k-ti plesac (odbrojava se pocev od plesaca oznacenog brojem 1 u smeru kretanja
kazaljke na satu). Preostali plesaci obrazuju manji krug iz kog opet izlazi k-ti plesac
(odbrojava se pocev od sledeceg suseda prethodno izbacenog, opet u smeru kazaljke na
satu). Izlasci iz kruga se nastavljaju sve dok svi plesaci ne budu iskljuceni. Celi brojevi
n, k (k < n) se ucitavaju sa standardnog ulaza. Napisati program koji ce na standardni
izlaz ispisati redne brojeve plesaca u redosledu napustanja kruga.
28

11.1 Liste

29

PRIMER: za n = 5, k = 3 redosled izlaska je 3 1 5 2 4. NAPOMENA: koristiti


kruznu listu (u kruznoj listi, poslednji element, umesto null pokazivaca cuva adresu
prvog elementa u listi)
11.1.2

Stek

Zadatak 93 Sadrzaj datoteke je aritmeticki izraz koji moze sadrzati zagrade {, [ i (.


Napisati program koji ucitava sadrzaj datoteke i koriscenjem steka utvruje da li su
zagrade u aritmetickom izrazu dobro uparene. Program stampa odgovarajucu poruku
na standardni izlaz.

29

12
Cas

Praktikum, 12. nedelja


12.1

Stabla

Zadatak 94 Napisati sledece funkcije za rad sa binarnim stablima (koja ne moraju


biti pretrazivacka) koja sadrze cele brojeve:
1. Funkcija koja izracunava broj cvorova stabla.
2. Funkcija koja izracunava broj listova stabla.
3. Funkcija koja izracunava sumu cvorova stabla.
4. Funkcija koja izracunava dubinu stabla.
5. Funkcija koja izracunava najveci element u stablu.
6. Funkcija koja ispisuje sve elemente na i-tom nivou.
Zadatak 95 Napisati sledece funkcije za rad sa binarnim stablima koja sadrze cele
brojeve (ne obavezno pretrazivackim):
1. Funkcija koja vraca pokazivac na cvor u stablu kod koga je najmanji (najveci)
proizvod sadrzaja cvorova iz njegovog desnog podstabla.
2. Funkciju koja vraca pokazivac na cvor u stablu kod koga je najmanja suma sadrzaja
njegovog levog podstabla.
3. Funkciju koja stampa sadrzaj svih cvorova binarnog stabla na putanji od korena
do najdubljeg cvora.
4. Funkciju koja stampa sadrzaj svih cvorova binarnog stabla na putanji od korena
do cvora koji ima najmanju vrednost u stablu.
Zadatak 96 Napisati funkciju koja racuna sumu svih vrednosti y u binarnom stablu
pretrage koje su manje ili jednake od date vrednosti x. Napisati potom i program koji
testira ovu funkciju.

30

12.1 Stabla

31

Zadatak 97 Dva binarna stabla su identicna ako su ista po strukturi i sadrzaju, odnosno
oba korena imaju isti sadrzaj i njihova odgovarajuc podstabla su identicna. Napistati
funkciju koja proverava da li su dva binarna stabla identicna.
Zadatak 98 Neka je dat pokazivac na koren binarnog stabla ciji cvorovi sadrze cele
brojeve. Napisati sledec funkcije:
1. Funkciju koja vraca broj cvorova koji su po sadrzaju veci od svih svojih potomaka.
2. Funkciju koja ispisuje cvorove koji su veci od sume svih svojih potomaka.
Zadatak 99 Napisati funkciju koja stampa pozitivne vrednosti listova drveta i program
koji tu funkciju testira.

31

13
Cas

Praktikum, 13. nedelja


13.1

Stabla

Zadatak 100 Nivoi drveta su definisani na sledeci nacin: koren je na nultom nivou,
deca od korena su na prvom nivou, njihova deca na drugom nivou i tako redom.
1. Napisati funkciju koja izracunava koliko se cvorova nalazi na n-tom nivou.
2. Napisati funkciju koja izracunava maksimalnu vrednost cvorova na n-tom nivou.
3. Napisati funkciju koja izracunava zbir cvorova na n-tom nivou.
4. Napisati program koji testira rad ovih funkcija.
Zadatak 101 Napisati funkciju koja stampa sadrzaj cvorova drveta koji se nalaze na
n-tom nivou u drvetu. Napisati program koji stampa sadrzaj drveta po nivoima
(a) koristeci prethodnu funkciju
(b) bez koriscenja prethodne funkcije (uz samo jedan prolazak kroz drvo koriscenjem
pomocne liste).
Zadatak 102 Napisati program koji na standardni izlaz ispisuje naziv (bez atributa)
najcesce koriscene etikete u datoteci ulaz.htm. Ako ima vise takvih, ispisati ma koju.
Koristiti ureeno binarno stablo. Pretpostaviti da je ulazna datoteka sintaksno korektna.
Zadatak 103 Napisati program koji iz tekstualne datoteke ciji je ime dato kao argument komandne linije ucitava razlicite prirodne brojeve i:
1. dodaje ih redom u ureeno binarno stablo
2. u dobijenom drvetu izracunava duzinu najduzeg puta od korena do nekog lista i
3. stampa u rastucem poretku (bez ponavljanja) sve brojeve koji su nalaze na putevima
te duzine od korena do listova.
Zadatak 104 U tekstualnoj datoteci nalaze se podaci o prijemnom ispitu ucenika jedne
osnovne skole tako sto je u svakom redu navedeno: ime i prezime ucenika (niz znakova
32

13.1 Stabla

33

ne duzi od 50 znakova), broj poena na osnovu uspeha (decimalan broj), broj poena na
prijemnom ispitu iz matematike (decimalan broj) i broj poena na prijemnom ispitu iz
maternjeg jezika (decimalan broj). Za ucenika koji osvoji manje od 10 poena ukupno
na oba prijemna smatra se da nije polozio prijemni. Napisati program na C-u koji
na osnovu podataka iz ove datoteke formira i prikazuje rang listu ucenika. Rang lista
sadrzi: redni broj, ime i prezime ucenika, broj poena na osnovu uspeha, broj poena na
prijemnom ispitu iz maternjeg jezika, broj poena na prijemnom ispitu iz matematike
i ukupan broj poena i sortirana je opadajuce po ukupnom broju poena. U rang listi
se navode prvo oni ucenici koji su polozili prijemni a potom ucenici koji nisu polozili
prijemni. Izmeu ove dve grupe staviti horizontalnu liniju
().
Ime datoteke navodi se kao argument komandne linije.

33

14
Cas

Ve
zba za prakti
cni deo ispita
Zadatak 105 Uraditi pazljivo sve zadatke koji su raeni na vezbama.
Zadatak 106 Uraditi pazljivo sve zadatke koji su raeni na praktikumima.
Kome prethodna dva zadatka nisu dovoljna, evo jos nekih zadataka za vezbu.
Zadatak 107 Napisati funkciju koja formira listu studenata tako sto se podaci o studentima ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. U
svakom redu datoteke nalaze se podaci o studentu i to broj indeksa, ime i prezime.
Napisati rekurzivnu funkciju koja odreuje da li neki student (koji se trazi na osnovu
broja indeksa, pri cemu se broj indeksa zadaje sa standardnog ulaza) pripada listi ili
ne. Ispisati zatim odgovarajucu poruku i rekurzivno osloboditi memoriju koju je data
lista zauzimala.
Zadatak 108 Definisati strukturu podataka potrebnu za implementaciju liste ciji su
elementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njen
pocetak (1 poen). Napisati funkciju koja oslobaa memoriju koju zauzima lista (1 poen).
Napisati funkciju koja ispisuje sadrzaj liste (1 poen). Napisati funkciju koja proverava
da li broj pripada listi (1 poen). Sa standardnog ulaza unose se pozitivni brojevi na
osnovu kojih se formira lista (2 poena). Odstampati sadrzaj liste (1 poen). Zatim se
unosi jedan broj. Program treba da proveri da li taj broj pripada listi i da odstampa
odgovarajucu poruku (2 poena).
Zadatak 109 Definisati strukturu podataka potrebnu za implementaciju liste ciji su
elementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njen
pocetak (1 poen). Napisati rekurzivnu funkciju koja oslobaa memoriju koju zauzima
lista (1 poen). Napisati rekurzivnu funkciju koja ispisuje sadrzaj liste (1 poen). Napisati
rekurzivnu funkciju koja proverava da li broj pripada listi (1 poen). Sa standardnog
ulaza unose se pozitivni brojevi na osnovu kojih se formira lista (2 poena). Odstampati
sadrzaj liste (1 poen). Zatim se unosi jedan broj. Program treba da proveri da li taj
broj pripada listi i da odstampa odgovarajucu poruku (2 poena).
Zadatak 110 Definisati strukturu podataka potrebnu za implementaciju liste ciji su
elementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njen
34

Ve
zba za prakti
cni deo ispita

35

kraj (1 poen). Napisati funkciju koja oslobaa memoriju koju zauzima lista (1 poen).
Napisati funkciju koja ispisuje sadrzaj liste (1 poen). Napisati funkciju koja proverava
da li broj pripada listi (1 poen). Sa standardnog ulaza unose se pozitivni brojevi na
osnovu kojih se formira lista (2 poena). Odstampati sadrzaj liste (1 poen). Zatim se
unosi jedan broj. Program treba da proveri da li taj broj pripada listi i da odstampa
odgovarajucu poruku (2 poena).
Zadatak 111 Definisati strukturu podataka potrebnu za implementaciju liste ciji su
elementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njen
kraj (1 poen). Napisati rekurzivnu funkciju koja oslobaa memoriju koju zauzima lista
(1 poen). Napisati rekurzivnu funkciju koja ispisuje sadrzaj liste (1 poen). Napisati
rekurzivnu funkciju koja proverava da li broj pripada listi (1 poen). Sa standardnog
ulaza unose se pozitivni brojevi na osnovu kojih se formira lista (2 poena). Odstampati
sadrzaj liste (1 poen). Zatim se unosi jedan broj. Program treba da proveri da li taj
broj pripada listi i da odstampa odgovarajucu poruku (2 poena).
Zadatak 112 Napisati rekurzivnu funkciju koja implementira binarnu pretragu celih
brojeva (4 poena). Napisati program koji pomocu te funkcije proverava da li se u nizu
sortiranih brojeva koji se unose sa standardnog ulaza nalazi broj 10 (2 poena). Za niz
koji se unosi sa standardnog ulaza dinamicki alocirati memoriju (2 poena). Velicina
niza se zadaje kao argument komandne linije (2 poena).
Zadatak 113 Napisati rekurzivnu funkciju koja ispisuje broj koji se pise istim ciframa
ali u obrnutom poretku (3 poena). Broj se unosi sa standardnog ulaza. Napisati program
koji poziva ovu funkciju (2 poena).
Zadatak 114 Napisati program koji prepisuje datoteku cije se ime navodi kao prvi
argument komandne linije u datoteku cije se ime navodi kao drugi argument komandne
linije programa (5 poena). Ukoliko je kao treci argument navedena opcija -u program
prilikom prepisivanja treba da zamenjuje sva mala slova velikim a sva velika malim (3
poena).
Zadatak 115
(0.5 poena) Definisati strukturu Cvor potrebnu za implementaciju liste koja cuva podatke o
recima i njihovom broju pojavljivanja u datoteci.
(0.5 poena) Napraviti datoteku ulaz koja sadrzi tekst sa najmanje 100 reci, od cega bar 30 reci
duzine 5, pri cemu najmanje 10 takvih razlicitih reci.
(0.5 poena) Napisati funkciju NapraviCvor koja alocira memoriju potrebnu za skladistenje
cvora i koja upisuje odgovarajuce podatke u cvor.
(0.5 poena) Napisati funkciju OslobodiMemoriju koja oslobaa memoriju koju zauzima lista.
(1 poen) Napisati funkciju Procitaj koja ucitava iz datoteke prvu sledecu rec koja sadrzi
tacno 5 slova.
(1 poen) Napisati funkciju Dodaj koja, ukoliko rec ne postoji u listi, dodaje datu rec na
pocetak liste, a ukoliko postoji, uvecava njen broj pojavljivanja.
35

Ve
zba za prakti
cni deo ispita

36

(1 poen) Napisati program koji broji pojavljivanja reci duzine 5 u datoteci cije se ime zadaje
kao argument komandne linije i koji stampa na standardni izlaz sadrzaj liste i onu
rec koja se pojavila najmanji broj puta.
Zadatak 116 Uraditi prethodni zadatak koriscenjem binarnog pretrazivackog stabla
umesto liste.
Zadatak 117
(0.5 poena) Definisati strukturu Cvor potrebnu za implementaciju liste koja cuva podatke o
recima i njihovom broju pojavljivanja u datoteci.
(0.5 poena) Napraviti datoteku ulaz koja sadrzi tekst u kome su vlastite imenice obelezene
viticastim zagradama. Na primer, sledeci red predstavlja jednu mogucu liniju datoteke
Danas je {Milica} isla u skolu.
Obezbediti da datoteka sadrzi bar 100 reci, od cega bar 30 vlastitih imena, pri cemu
najmanje 10 razlicitih imena.
(0.5 poena) Napisati funkciju NapraviCvor koja alocira memoriju potrebnu za skladistenje
cvora i koja upisuje odgovarajuce podatke u cvor.
(0.5 poena) Napisati funkciju OslobodiMemoriju koja oslobaa memoriju koju zauzima lista.
(1 poen) Napisati funkciju Procitaj koja ucitava vlastitu imenicu iz datoteke.
(1 poen) Napisati funkciju Dodaj koja, ukoliko rec ne postoji u listi, dodaje datu rec u
leksikografski sortiranu listu, a ukoliko postoji, uvecava njen broj pojavljivanja.
(1 poen) Napisati program koji broji pojavljivanja vlastitih imena u datoteci cije se ime
zadaje kao argument komandne linije i koji stampa na standardni izlaz ono ime
koje se pojavilo najveci broj puta.
Zadatak 118 Uraditi prethodni zadatak koriscenjem binarnog pretrazivackog stabla
umesto liste.
Zadatak 119 Napisati funkciju int prebroj01(unsigned char c) koja prebrojava
broj pojavljivanja kombinacije cifara 01 u binarnom zapisu neoznacenog karaktera. Na
primer, za broj 2 (binarno 00000010) broj pojavljivanja kombinacije cifara 01 je 1, dok
je za broj 10 (binarno 00001010) broj pojavljivanja kombinacije cifara 01 je 2.
Zadatak 120 Napisati rekruzivnu funkciju int prebroj01(unsigned char c) koja
prebrojava broj pojavljivanja kombinacije cifara 01 u binarnom zapisu neoznacenog
karaktera. Na primer, za broj 2 (binarno 00000010) broj pojavljivanja kombinacije
cifara 01 je 1, dok za broj 10 (binarno 00001010) broj pojavljivanja kombinacije cifara
01 je 2.
Zadatak 121 Definisimo naredni kriterijum ureenja reci: prva rec je manja od druge
ukoliko je kraca; ukoliko su dve reci iste duzine, prva rec je manja od druge ukoliko je leksikografski ispred druge reci. Napisati program koji na osnovu reci koje se
36

Ve
zba za prakti
cni deo ispita

37

ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije formira binarno pretrazivacko stablo koristeci prethodno opisan kriterijum ureenja reci. Za reci
prebrojavati njihov broj pojavljivanja i to odstampati na standardni izlaz.
Zadatak 122 Napisati program koji na standardni izlaz ispisuje naredni tekst (u beskonacnoj
petlji):
JA VOLIM DA PROGRAMIRAM!!!
A VOLIM DA PROGRAMIRAM!!!J
VOLIM DA PROGRAMIRAM!!!JA
VOLIM DA PROGRAMIRAM!!!JA
OLIM DA PROGRAMIRAM!!!JA V
LIM DA PROGRAMIRAM!!!JA VO
IM DA PROGRAMIRAM!!!JA VOL
M DA PROGRAMIRAM!!!JA VOLI
DA PROGRAMIRAM!!!JA VOLIM
DA PROGRAMIRAM!!!JA VOLIM
A PROGRAMIRAM!!!JA VOLIM D
PROGRAMIRAM!!!JA VOLIM DA
PROGRAMIRAM!!!JA VOLIM DA
ROGRAMIRAM!!!JA VOLIM DA P
OGRAMIRAM!!!JA VOLIM DA PR
GRAMIRAM!!!JA VOLIM DA PRO
RAMIRAM!!!JA VOLIM DA PROG
AMIRAM!!!JA VOLIM DA PROGR
MIRAM!!!JA VOLIM DA PROGRA
IRAM!!!JA VOLIM DA PROGRAM
RAM!!!JA VOLIM DA PROGRAMI
AM!!!JA VOLIM DA PROGRAMIR
M!!!JA VOLIM DA PROGRAMIRA
!!!JA VOLIM DA PROGRAMIRAM
!!JA VOLIM DA PROGRAMIRAM!
!JA VOLIM DA PROGRAMIRAM!!
JA VOLIM DA PROGRAMIRAM!!!
A VOLIM DA PROGRAMIRAM!!!J
VOLIM DA PROGRAMIRAM!!!JA
VOLIM DA PROGRAMIRAM!!!JA
OLIM DA PROGRAMIRAM!!!JA V
LIM DA PROGRAMIRAM!!!JA VO
IM DA PROGRAMIRAM!!!JA VOL
M DA PROGRAMIRAM!!!JA VOLI
DA PROGRAMIRAM!!!JA VOLIM
DA PROGRAMIRAM!!!JA VOLIM
A PROGRAMIRAM!!!JA VOLIM D
PROGRAMIRAM!!!JA VOLIM DA
...
37

You might also like