38
 Programiranje 2 Programski jezik C  Zadaci za praktikume  Mil en a Vujo ˇ se vi´ c - Ja ni ˇ ci ´ c 20 14

P2zadaciSaPraktikuma2014

Embed Size (px)

Citation preview

  • Programiranje 2

    Programski jezik C

    Zadaci za praktikume

    Milena Vujosevic - Janicic 2014

  • Sadrzaj

    1 Praktikum, 1. nedelja 31.1 Argumenti komandne linije . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Praktikum, 2. nedelja 62.1 Datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Bitski operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 Praktikum, 3. nedelja 83.1 Organizacija koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4 Praktikum, 4. nedelja 104.1 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    5 Praktikum, 5. nedelja 125.1 Pretraga i sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    6 Praktikum, 6. nedelja 146.1 Sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    7 Praktikum, 7. nedelja 177.1 Sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.2 Pokazivaci na funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.3 Matrice staticki alocirane . . . . . . . . . . . . . . . . . . . . . . . . . . 177.4 Datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    8 Praktikum, 8. nedelja 208.1 Bibliotecke funkcije qsort, bsearch, lsearch i lfind . . . . . . . . . . 208.2 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    9 Praktikum, 9. nedelja 239.1 Dinamicka alokacija memorije. Matrice . . . . . . . . . . . . . . . . . . 23

    10 Praktikum, 10. nedelja 2510.1 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    10.1.1 Dvostruko povezane liste . . . . . . . . . . . . . . . . . . . . . . 25

    1

  • SADRZAJ 2

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

    11 Praktikum, 11. nedelja 2711.1 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    11.1.1 Kruzna lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2711.1.2 Stek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    12 Praktikum, 12. nedelja 2912.1 Stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    13 Praktikum, 13. nedelja 3113.1 Stabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    14 Vezba za prakticni deo ispita 33

    2

  • Cas 1

    Praktikum, 1. nedelja

    1.1 Argumenti komandne linije

    Zadatak 1 Kao argumenti komandne linije zadaju se vlastita imena. Napisati programkoji proverava da li se meu imenima nalazi ime Milica.

    Zadatak 2 Kao argumenti komandne linije zadaju se brojevi. Napisati program kojiracuna i ispisuje zbir tih brojeva. Na primer, ako se program pokrene sa./a.out 1 2 3 4 5

    Izlaz iz programa treba da budeZbir brojeva je 15

    Zadatak 3 Napisati program koji proverava da li je meu argumentima komandnelinije 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 satastature) u izlaznu datoteku. Na primer, ako je sadrzaj ulazne datotekeDanas je lep dan\n

    a broj n = 3 tada sadrzaj izlazne datoteke treba da budeDanas 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 udatom intervalu kojima je zbir cifara slozen broj. Interval se zadaje ucitavanjem gornjei 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

    4. broj linija

    5. broj recenica

    6. broj reci

    u ulaznoj datoteci cije se ime zadaje kao argument komandne linije i rezultat upisuje udatoteku izlaz.txt.

    Zadatak 7 Ime datoteke se unosi sa standardnog ulaza (pretpostaviti da ime datotekenije duze od 20 karaktera). Napisati program koji broji pojavljivanja za svako od slovaengleske abecede u datoteci i stampa rezultat na standardni izlaz.

    Zadatak 8 Napisati program koji broji pojavljivanja za svaku cifru teksta datotekecije se ime zadaje kao argument komandne linije i stampa koliko se puta koja cifrapojavila, koja se cifra pojavila najveci broj puta i koja se cifra pojavila najmanji brojputa. 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 tecifre. 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 trougaoza broj N koji se unosi sa standardnog ulaza. Na primer, za N=7, program u datotekutreba da upise sledeci sadrzaj:

    1

    1 1

    1 2 1

    1 3 3 1

    4

  • 1.2 Datoteke 5

    1 4 6 4 1

    1 5 10 10 5 1

    1 6 15 20 15 6 1

    5

  • Cas 2

    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 da-toteku najpre prepisuje sadrzaj druge polovine datoteke, a zatim sadrzaj prve polovinedatoteke. Na primer, ako je sadrzaj ulazne datoteke Danas je lep dan sadrzaj izlaznedatoteke treba da bude lep danDanas je

    Zadatak 11 Imena ulazne i izlazne datoteke zadaju se kao argumenti komandne lin-ije. Napisati program kojim se sadrzaj ulazne datoteke prepisuje tako da se u izlaznudatoteku upisuje najpre prvi karakter ulazne datoteke, zatim poslednji karakter ulaznedatoteke, zatim drugi karakter ulazne datoteke, zatim pretposlednji karakter ulazne da-toteke i tako redom, jedan karakter sa pocetka pa jedan karakter sa kraja datoteke. Naprimer, ako je sadrzaj ulazne datoteke Danas je lep dan. sadrzaj izlazne datoteketreba 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 iizlazne datoteke, onda se podrazumeva da su imena ulazne i izlazne datoteke ulaz.txti izlaz.txt Napisati program kojim se sadrzaj ulazne datoteke prepisuje tako da seu izlaznu datoteku upisuje najpre prvi red ulazne datoteke, zatim poslednji red ulaznedatoteke, zatim drugi red ulazne datoteke, zatim pretposlednji red ulazne datoteke i takoredom, jedan red sa pocetka pa jedan red sa kraja datoteke. Na primer, ako je sadrzajulazne 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 7

    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) kojaizracunava sumu prvog i poslednjeg bita broja x. Napisati program koji testira radove funkcije. Broj x se zadaje kao argument komandne linije.

    Zadatak 14 Sastaviti funkciju int Broj01(unsigned short n) koja za dati broj n vraca 1ako u njegovom binarnom zapisu ima vise jednica nego nula, a inace vraca 0. Napisatiprogram koji tu funkciju testira za broj koji se zadaje sa standardnog ulaza.

    Zadatak 15 Napisati funkciju koja broji koliko se puta kombinacija 11 (dve uzastopnejedinice) pojavljuje u binarnom zapisu celog broja x.

    Zadatak 16 Napisati funkciju koja na osnovu neoznacenog broja x formira nisku skoja sadrzi heksadekadni zapis broja x, koristeci algoritam za brzo prevoenje bina-rnog u heksadekadni zapis (svake 4 binarne cifre se zamenjuju jednom odgovarajucomheksadekadnom cifrom).

    Zadatak 17 Napisati funkciju koja za dva data broja x i y invertuje u podatku x onebitove koji se poklapaju sa odgovarajucim bitovima u broju y. Ostali bitovi ostaju ne-promenjeni.

    Zadatak 18 Napisati program koji sa standardnog ulaza ucitava pozitivan ceo broj, ana standardni izlaz ispisuje vrednost tog broja sa razmenjenim vrednostima bitova napozicijama i, j. Pozicije i, j se ucitavaju kao parametri komandne linije. Smatrati da jekrajnji desni bit binarne reprezentacije 0-ti bit. Pri resavanju nije dozvoljeno koristitipomocni niz niti aritmeticke operatore +,-,/,*,%.

    7

  • Cas 3

    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 reprezento-van 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.ciligcc -c kompleksni.cgcc -c test-kompleksni.cgcc -o test-kompleksni kompleksni.o test-kompleksni.o

    8

  • 3.1 Organizacija koda 9

    Zadatak 20 Napraviti biblioteku za rad sa skupovima celih brojeva (skupovi imaju na-jvise 1000 elemenata).

    1. Definisati strukturu podataka za reprezentovanje skupova (koristiti sortirane ni-zove).

    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 programkoji testira rad te funkcije za polinom ciji su stepen i koeficijenti zadati u datotecipolinom.txt.

    10

  • Cas 4

    Praktikum, 4. nedelja

    4.1 Rekurzija

    Zadatak 23 Napisati program koji (a) iterativno (b) rekurzivno racuna n-ti Fibonacijevbroj, pri cemu se broj n zadaje sa standardnog ulaza. Uporediti brzine izvrsavanja ovadva programa za n=5, n=55 i n=95.

    Zadatak 24 Napisati program u kome se koriscenjem rekurzivne funkcije izracunavaNZD brojeva x i y.

    nzd(x, y) =

    {y, x = 0nzd(y%x, x), x! = 0

    Zadatak 25 Napisati rekurzivnu funkciju koja ispisuje broj koji se pise istim ciframaali u obrnutom poretku. Broj se unosi sa standardnog ulaza. Napisati program kojitestira rad ove funkcije.

    Zadatak 26 Napisati rekurzivnu funkciju koja izracunava broj cifara njenog argu-menta 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 brojcifara njenog argumenta paran (ne koristeci prebrojavanje broja cifara broja) i programkoji tu funkciju testira za vrednost koja se unosi sa standardnog ulaza.

    Zadatak 28 Napisati rekurzivnu funkciju koja izracunava sumu bitova datog neoznacenogbroja 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 brojax. 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 koefi-cienta. Napisati program koji testira rad ove funkcije.

    Zadatak 33 Napisati rekurzivne funkcije koje ispisuju elemente datog niza s leva nadesno, odnosno s desna na levo i program koji te funkcije testira za vrednosti koje seucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. Pretpostavitida u datoteci nije zadato vise od 100 brojeva.

    Zadatak 34 Napisati rekurzivnu funkciju koja sabira niz celih brojeva i program kojitu funkciju testira za vrednosti koje se unose sa standardnog ulaza.

    Zadatak 35 Napisati rekurzivnu funkciju koja proverava da li je data niska karak-tera palindrom i program koji tu funkciju testira za nisku koja se zadaje kao argumentkomandne linije.

    Zadatak 36 Napisati rekurzivnu funkciju koja proverva da li su svi elementi datogniza jednaki datom broju i program koji tu funkciju testira za vrednosti koje se zadajusa 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 jednakazadatoj tacki. Napisati i program koji tu funkciju testira za vrednost tacke koji se zadajesa standardnog ulaza dok se niz tacaka ucitava iz datoteke Tacke.txt. Pretpostavitida u datoteci nije zadato vise od 100 tacaka.

    Zadatak 38 Napisati rekurzivnu funkciju koja izracunava maksimum niza brojeva iprogram koji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.

    Zadatak 39 Napisati rekurzivnu funkciju koja izracunava minimum niza brojeva i pro-gram koji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.

    12

  • Cas 5

    Praktikum, 5. nedelja

    5.1 Pretraga i sortiranje

    Zadatak 40 Napisati funkciju koja rekurzivno implementira algoritam interpolacionepretrage i program koji ovu funkciju testira za brojeve koji se unose sa standardnogulaza (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 (up-utstvo: prvo sortirati niz).

    Zadatak 42 Napisati program koji pronalazi broj koji se najvise puta pojavljivao udatom nizu (uputstvo: prvo sortirati niz a zatim naci najduzu sekvencu jednakih ele-menata).

    Zadatak 43 Napisati funkciju koja sortira slova unutar niske karaktera. Napisati pro-gram koji proverava da li su dve niske karaktera anagrami. Dve niske su anagrami akose sastoje od istog broja istih karaktera. Na primer, niske anagram i ramgana jesuanagrami, 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 od100 karaktera) i da se onda on prikaze sortiran i to tako da svako slovo koje se naena parnoj poziciji sortiranog niza bude pretvoreno u odgovarajuce veliko, a svako slovokoje se nalazi na neparnoj poziciji sortiranog niza bude pretvoreno u odgovarajuce maloslovo. 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 elementakojima je zbir zadati ceo broj (uputstvo: prvo sortirati niz).

    Zadatak 47 Napisati funkciju koja prima dva sortirana niza, i na osnovu njih pravinovi 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 manjaod potrebne duzine, funkcija vraca -1, kao indikator neuspeha, inace vraca 0.

    14

  • Cas 6

    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 argumentkomandne linije, i u zavisnosti od prisutnih opcija u komandnoj liniji, sortira tacke pojednom od prethodna tri kriterijuma i rezultat upisuje u datoteku cije se ime zadaje kaodrugi argument komandne linije. Na primer, ako se program pokrene saa.out -x tacke.txt sorttacke.txt

    tada program treba da sortira tacke iz datoteke tacka.txt na osnovu x koordinate i dasortiran rezultat upise u datoteku sorttacke.txt. U ulaznoj datoteci nije zadato viseod 100 tacaka.

    Zadatak 49 Napisati rekurzivnu implementaciju bubble sort algoritma i program kojito testira.

    Zadatak 50 Napisati rekurzivnu implementaciju shell sort algoritma i program koji totestira.

    Zadatak 51 Napisati nerekurzivnu implementaciju quick sort algoritma i program kojito testira.

    Zadatak 52 Kao argumenti komandne linije zadaju se imena dve datoteke koje sadrzesortirane cele brojeve. Formirati datoteku Rezultat.txt koja sadrzi sortirane brojeveobe datoteke. Na primer, ako je sadrzaj prve datoteke 1 3 5 7 9 11 a sadrzaj drugedatoteke 2 3 4 6 7 10 12 tada sadrzaj datoteke Rezultat.txt treba da sadrzi brojeve 12 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 ihsortirati leksikografski po prezimenu i imenu. Napisati program koji ucitava podatke odeci 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 argumentkomandne linije. Pretpostaviti da u ulaznoj datoteci nisu zadati podaci o vise od 100dece. 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 //najmanje godiste, prezime na A

    Ana Petrovic 2007 //najmanje godiste, prezime Petrovic, ime na slovo A

    Petar Petrovic 2007 //najmanje godiste, prezime Petrovic, ime na slovo P

    Milica Antonic 2008 //sledece najmanje godiste

    Ivana Ivanovic 2009 //...

    Dragana Markovic 2010 //...

    Zadatak 54 Napisati funkciju koja sortira niz velikih brojeva i program koji ucitavaniz velikih brojeva iz datoteke veliki_brojevi.txt i upisuje sortirane velike brojeve udatoteku sortirani_brojevi.txt. Pretpostaviti da datoteka veliki_brojevi.txt nesadrzi 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 brojevakoristiti 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 iime. 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 prezi-mena po imenu. Tako sortirana prezimena i imena upisati u datoteku sortirano.txt.

    17

  • Cas 7

    Praktikum, 7. nedelja

    7.1 Sortiranje

    Zadatak 56 Napisati funkciju koja sortira niz niski po broju suglasnika u niski, ukolikoreci imaju isti broj suglasnika tada po duzini niske, a ukoliko su i duzine jednake tadaleksikografski. Napisati program koji testira ovu funkciju za niske koje se zadaju udatoteci niske.txt. Na primer, za niz niskiana petar an{\d}ela milos nikola aleksandar ljubica matej milica

    izlaz treba da budeana matej milos petar milica nikola an{\d}ela ljubica aleksandar.Pretpostaviti da u nizu nema vise od 100 elemenata, kao da svaka niska sadrzi najvise20 karaktera.

    7.2 Pokazivaci na funkcije

    Zadatak 57 Napisati funkciju koja izracunava limes funkcije f(x) u tacki a. Adresafunkcije 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 ulazakao i ime funkcije):

    limxaf(x) = limnf(a +1

    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: b

    af(x) = h (f(a) + f(b)

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

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

    7.3 Matrice staticki alocirane

    Zadatak 59 Napisati funkciju koja izracunava redni broj vrste u kojoj se nalazi mak-simalni 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 elementimatrice. Pretpostaviti da je maksimalna dimenzija matrice 10x10. Testirati programkoriscenjem 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 standardnogulaza pri cemu se prvo unose dimenzije matrice, a zatim elementi matrice. Pret-postaviti da je maksimalna dimenzija matrice 10x10. Testirati program koriscenjempreusmeravanja.

    Zadatak 61 Napisati funkciju koja menja sadrzaj matrice tako sto se elementi ispodglavne dijagonale dupliraju, elementi iznad glavne dijagonale polove, dok elementi naglavnoj dijagonali ostaju isti. Napisati program koji testira ovu funkciju za vrednostikoje se ucitavaju iz datoteke matrica.txt pri cemu se u datoteci nalaze prvo dimenzijematrice, a zatim redom elementi matrice. Pretpostaviti da je maksimalna dimenzijamatrice 10x10.

    Zadatak 62 Napisati funkciju koja izracunava zbir apsolutnih vrednosti ispod sporednedijagonale matrice. Napisati program koji testira ovu funkciju za vrednosti koje seucitavaju iz datoteke cije se ime zadaje kao argument komandne linije pri cemu se udatoteci nalaze prvo dimenzije matrice, a zatim redom elementi matrice. Pretpostavitida je maksimalna dimenzija matrice 10x10.

    7.4 Datoteke

    Zadatak 63 Datoteka u prvom redu sadrzi broj studenata, a u svakom narednom infor-macije o jednom studentu: ime, prezime, smer, broj ESP bodova. Napisati program kojiiz te datoteke, cije se ime navodi kao prvi argument komandne linije, vrsi ucitavanjeliniju po liniju i ispisuje inforamciju o studentu koji je sakupio najvise bodova u da-toteku sa imenom kandidatZaStipendiju.txt. Ne koristiti pomocan niz.

    Zadatak 64 Napisati funkcijuint gettag(FILE *f, char *s, int size)

    koja ucitava sledecu HTML etiketu iz datoteke koja je predstavljena fajl-pokazivacemf, u string s, ali ne vise od size karaktera. Funkcija vraca 1 ako je uspela da procitanarednu etiketu, ili 0 za neuspeh. Napisati program koji ovu funkciju testira za datotekucije 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 prviargument komandne linije proverava da li je rec koja je zadata u prvoj liniji da-toteke njen prefiks i stampa odgovarajucu poruku u datoteku cije se ime zadaje kaodrugi argument komandne linije. Pretpostaviti da linija teksta nije duza od 100karaktera.

    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. Naprimer, 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 8.67

    Mika Mikic 7.60

    Ana Anic 9.75

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

    20

  • Cas 8

    Praktikum, 8. nedelja

    8.1 Bibliotecke 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 qsortfunkcijom) i ispituje i stampa da li su s i t anagrami (npr. vrata, vatra).

    Zadatak 69 Napisati program koji sortira opadajuce niz brojeva koristeci biblioteckufunkciju qsort.

    Zadatak 70 Napisati program koji sa standardnog ulaza ucitava prvo ceo broj n (n

  • 8.1 Bibliotecke 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 pri-pada 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 pre-trazivanja odstampati sadrzaj celog niza.

    4. Sortirati niz struktura artikal koristeci funkciju qsort iz standardne biblioteke

    po bar kodu po ceni po pdv-u po imenu

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

    po bar kodu po ceni po pdv-u po imenu

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

    22

  • 8.2 Rekurzija 23

    8.2 Rekurzija

    Zadatak 74 Napisati rekurzivnu funkciju koja leksikografski poredi dve niske karakterai program koji tu funkciju testira za vrednosti koje se zadaju kako argumenti komandnelinije.

    Zadatak 75 Napisati rekurzivnu funkciju koja prevodi dati dekadni broj u niz bina-rnih cifara datog broja i program koji tu funkciju testira za vrednosti koje se unose sastandardnog ulaza.

    Zadatak 76 Napisati rekurzivnu funkciju koja izracunava sumu bitova datog neoznacenogbroja 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 programkoji tu funkciju testira za vrednosti koje se unose sa standardnog ulaza.

    Zadatak 78 Napisati rekurzivnu funkciju koja izracunava skalarni proizvod dva datavektora. i program koji tu funkciju testira za vrednosti koje se unose sa standardnogulaza.

    Zadatak 79 Napisati rekurzivnu funkciju koja racuna broj pojavljivanja elementa x unizu a duzine n.

    23

  • Cas 9

    Praktikum, 9. nedelja

    9.1 Dinamicka alokacija memorije. Matrice

    Zadatak 80 Napisati program koji omogucva unos dimenzije kvadratne matrice i unoselemenata 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 stan-dardni izlaz.

    Zadatak 81 U datoteci je zapisana matrica i to tako sto se u prvom redu nalazi dvabroja koji predstavljaju broj vrsta n i broj kolona m matrice. Dalje se u svakom redudatoteke kojih ima n nalazi po m brojeva. Ucitati date brojeve iz datoteke u odgovarajucumatricu. 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 Dinamicka 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 4

    1 2 3 4

    2 3 4 5

    3 4 5 6

    Zadatak 82 Napisati funkciju koja omogucava racunanje proizvoda dve kvadratne ma-trice dimenzija nn. Napisati program koji omogucava unosenje dve kvadratne matricei stampanje proizvoda te dve matrice.

    25

  • Cas 10

    Praktikum, 10. nedelja

    10.1 Liste

    Zadatak 83 Napisati program koji formira sortirane liste L1 i L2. Napisati zatimfunkciju koja

    formira listu L3 koja sadrzi sve elemente koji pripadaju datoj listi L1, a ne pri-padaju datoj listi L2.

    formira listu L3 koja sadrzi elemente koji pripadaju i datoj listi L1, i datoj listiL2.

    Obezbediti da program testira rad ovih funkcija.

    Zadatak 84 Napisati funkciju koja obrce datu jednostruko povezanu listu. Funkcija netreba da kreira nove cvorove, vec da samo postojece cvorove obrnuto rasporedi. Napisatiprogram koji testira ovu funkciju.

    Zadatak 85 Neka su date dve jednostruko povezane liste L1 i L2. Napisati funkcijukoja od tih lista formira jednu novu listu koja sadrzi alternirajuce rasporeene elementelista L1 i L2 (prvi element iz L1, prvi element iz L2, drugi element L1, drugi elementL2...itd.). Ne formirati nove cvorove, vec samo postojece cvorove rasporediti u jednulistu. Napisati i program koji testira ovu funkciju.

    10.1.1 Dvostruko povezane liste

    Zadatak 86 Ime datoteke se zadaje kao argument komandne linije. Sadrzaj datotekesu celi brojevi. Napisati program koji na osnovu sadrzaja datoteke formira dvostrukopovezanu listu i onda ispisuje njen sadrzaj od prvog do poslednjeg elementa, onda odpretposlednjeg do drugog elementa, zatim od treceg do n-3 elementa (gde je n broj ele-menata 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 efikasannacin ispisuje elemente liste u redosledu narednih brojeva koji oznacavaju redni broj el-ementa u listi: 1, 3, 2, 4, 5, 7, 6, 8, ..., 8, 6, 7, 5, 4, 2, 3, 1. Na primer, za listu kojaima 5 elemeneta, treba da se ispisu redom vrednosti corova kojima odgovaraju rednibrojevi 1, 3, 2, 4, 5, 5, 4, 2, 3, 1.

    26

  • 10.1 Liste 27

    10.1.2 Liste studenata

    Zadatak 88 Napisati funkciju koja formira listu studenata tako sto se prvo unosi brojindeksa i ukoliko je on razlicit od nule onda se unose ime i prezime, a u suprotnomse 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 studen-tima ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. U svakomredu datoteke nalaze se podaci o studentu i to broj indeksa, ime i prezime. Napisatifunkciju koja odreuje da li neki student (koji se trazi na osnovu broja indeksa, pricemu se broj indeksa zadaje sa standardnog ulaza) pripada listi ili ne. Ispisati zatimodgovarajucu poruku i osloboditi memoriju koju je data lista zauzimala.

    27

  • Cas 11

    Praktikum, 11. nedelja

    11.1 Liste

    Zadatak 90 Napisati program koji prebrojava pojavljivanja etiketa (bez atributa) HTMLdatoteke cije se ime zadaje kao argument komandne linije. Sadrzaj rezultujuce listeispisati 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 svakomredu.

    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 pronalazimaximalan strogo rastuci podniz.

    3. Koristeci funkcije pod a) i b) napisati program koji u datoteku Rezultat.txtupisuje naeni strogo rastuci podniz.

    11.1.1 Kruzna lista

    Zadatak 92 Grupa od n plesaca (na cijim kostimima su u smeru kazaljke na saturedom brojevi od 1 do n) izvodi svoju plesnu tacku tako sto formiraju krug iz kog najpreizlazi k-ti plesac (odbrojava se pocev od plesaca oznacenog brojem 1 u smeru kretanjakazaljke 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 nasatu). Izlasci iz kruga se nastavljaju sve dok svi plesaci ne budu iskljuceni. Celi brojevin, k (k < n) se ucitavaju sa standardnog ulaza. Napisati program koji ce na standardniizlaz 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: koristitikruznu listu (u kruznoj listi, poslednji element, umesto null pokazivaca cuva adresuprvog 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 suzagrade u aritmetickom izrazu dobro uparene. Program stampa odgovarajucu porukuna standardni izlaz.

    29

  • Cas 12

    Praktikum, 12. nedelja

    12.1 Stabla

    Zadatak 94 Napisati sledece funkcije za rad sa binarnim stablima (koja ne morajubiti 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 celebrojeve (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 sadrzajanjegovog levog podstabla.

    3. Funkciju koja stampa sadrzaj svih cvorova binarnog stabla na putanji od korenado najdubljeg cvora.

    4. Funkciju koja stampa sadrzaj svih cvorova binarnog stabla na putanji od korenado cvora koji ima najmanju vrednost u stablu.

    Zadatak 96 Napisati funkciju koja racuna sumu svih vrednosti y u binarnom stablupretrage koje su manje ili jednake od date vrednosti x. Napisati potom i program kojitestira ovu funkciju.

    30

  • 12.1 Stabla 31

    Zadatak 97 Dva binarna stabla su identicna ako su ista po strukturi i sadrzaju, odnosnooba korena imaju isti sadrzaj i njihova odgovarajuc podstabla su identicna. Napistatifunkciju koja proverava da li su dva binarna stabla identicna.

    Zadatak 98 Neka je dat pokazivac na koren binarnog stabla ciji cvorovi sadrze celebrojeve. 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 programkoji tu funkciju testira.

    31

  • Cas 13

    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 nan-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 koriscenjempomocne 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 korek-tna.

    Zadatak 103 Napisati program koji iz tekstualne datoteke ciji je ime dato kao argu-ment 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 putevimate duzine od korena do listova.

    Zadatak 104 U tekstualnoj datoteci nalaze se podaci o prijemnom ispitu ucenika jedneosnovne 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 naprijemnom ispitu iz matematike (decimalan broj) i broj poena na prijemnom ispitu izmaternjeg jezika (decimalan broj). Za ucenika koji osvoji manje od 10 poena ukupnona oba prijemna smatra se da nije polozio prijemni. Napisati program na C-u kojina osnovu podataka iz ove datoteke formira i prikazuje rang listu ucenika. Rang listasadrzi: redni broj, ime i prezime ucenika, broj poena na osnovu uspeha, broj poena naprijemnom ispitu iz maternjeg jezika, broj poena na prijemnom ispitu iz matematikei ukupan broj poena i sortirana je opadajuce po ukupnom broju poena. U rang listise navode prvo oni ucenici koji su polozili prijemni a potom ucenici koji nisu poloziliprijemni. Izmeu ove dve grupe staviti horizontalnu liniju().Ime datoteke navodi se kao argument komandne linije.

    33

  • Cas 14

    Vezba za prakticni 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 stu-dentima ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije. Usvakom 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 osnovubroja indeksa, pri cemu se broj indeksa zadaje sa standardnog ulaza) pripada listi iline. Ispisati zatim odgovarajucu poruku i rekurzivno osloboditi memoriju koju je datalista zauzimala.

    Zadatak 108 Definisati strukturu podataka potrebnu za implementaciju liste ciji suelementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njenpocetak (1 poen). Napisati funkciju koja oslobaa memoriju koju zauzima lista (1 poen).Napisati funkciju koja ispisuje sadrzaj liste (1 poen). Napisati funkciju koja proveravada li broj pripada listi (1 poen). Sa standardnog ulaza unose se pozitivni brojevi naosnovu kojih se formira lista (2 poena). Odstampati sadrzaj liste (1 poen). Zatim seunosi jedan broj. Program treba da proveri da li taj broj pripada listi i da odstampaodgovarajucu poruku (2 poena).

    Zadatak 109 Definisati strukturu podataka potrebnu za implementaciju liste ciji suelementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njenpocetak (1 poen). Napisati rekurzivnu funkciju koja oslobaa memoriju koju zauzimalista (1 poen). Napisati rekurzivnu funkciju koja ispisuje sadrzaj liste (1 poen). Napisatirekurzivnu funkciju koja proverava da li broj pripada listi (1 poen). Sa standardnogulaza unose se pozitivni brojevi na osnovu kojih se formira lista (2 poena). Odstampatisadrzaj liste (1 poen). Zatim se unosi jedan broj. Program treba da proveri da li tajbroj pripada listi i da odstampa odgovarajucu poruku (2 poena).

    Zadatak 110 Definisati strukturu podataka potrebnu za implementaciju liste ciji suelementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njen

    34

  • Vezba za prakticni 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 proveravada li broj pripada listi (1 poen). Sa standardnog ulaza unose se pozitivni brojevi naosnovu kojih se formira lista (2 poena). Odstampati sadrzaj liste (1 poen). Zatim seunosi jedan broj. Program treba da proveri da li taj broj pripada listi i da odstampaodgovarajucu poruku (2 poena).

    Zadatak 111 Definisati strukturu podataka potrebnu za implementaciju liste ciji suelementi celi brojevi (1 poen). Napisati funkciju koja umece element u listu na njenkraj (1 poen). Napisati rekurzivnu funkciju koja oslobaa memoriju koju zauzima lista(1 poen). Napisati rekurzivnu funkciju koja ispisuje sadrzaj liste (1 poen). Napisatirekurzivnu funkciju koja proverava da li broj pripada listi (1 poen). Sa standardnogulaza unose se pozitivni brojevi na osnovu kojih se formira lista (2 poena). Odstampatisadrzaj liste (1 poen). Zatim se unosi jedan broj. Program treba da proveri da li tajbroj pripada listi i da odstampa odgovarajucu poruku (2 poena).

    Zadatak 112 Napisati rekurzivnu funkciju koja implementira binarnu pretragu celihbrojeva (4 poena). Napisati program koji pomocu te funkcije proverava da li se u nizusortiranih brojeva koji se unose sa standardnog ulaza nalazi broj 10 (2 poena). Za nizkoji se unosi sa standardnog ulaza dinamicki alocirati memoriju (2 poena). Velicinaniza se zadaje kao argument komandne linije (2 poena).

    Zadatak 113 Napisati rekurzivnu funkciju koja ispisuje broj koji se pise istim ciframaali u obrnutom poretku (3 poena). Broj se unosi sa standardnog ulaza. Napisati programkoji poziva ovu funkciju (2 poena).

    Zadatak 114 Napisati program koji prepisuje datoteku cije se ime navodi kao prviargument komandne linije u datoteku cije se ime navodi kao drugi argument komandnelinije programa (5 poena). Ukoliko je kao treci argument navedena opcija -u programprilikom prepisivanja treba da zamenjuje sva mala slova velikim a sva velika malim (3poena).

    Zadatak 115

    (0.5 poena) Definisati strukturu Cvor potrebnu za implementaciju liste koja cuva podatke orecima i njihovom broju pojavljivanja u datoteci.

    (0.5 poena) Napraviti datoteku ulaz koja sadrzi tekst sa najmanje 100 reci, od cega bar 30 reciduzine 5, pri cemu najmanje 10 takvih razlicitih reci.

    (0.5 poena) Napisati funkciju NapraviCvor koja alocira memoriju potrebnu za skladistenjecvora 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 sadrzitacno 5 slova.

    (1 poen) Napisati funkciju Dodaj koja, ukoliko rec ne postoji u listi, dodaje datu rec napocetak liste, a ukoliko postoji, uvecava njen broj pojavljivanja.

    35

  • Vezba za prakticni deo ispita 36

    (1 poen) Napisati program koji broji pojavljivanja reci duzine 5 u datoteci cije se ime zadajekao argument komandne linije i koji stampa na standardni izlaz sadrzaj liste i onurec koja se pojavila najmanji broj puta.

    Zadatak 116 Uraditi prethodni zadatak koriscenjem binarnog pretrazivackog stablaumesto liste.

    Zadatak 117

    (0.5 poena) Definisati strukturu Cvor potrebnu za implementaciju liste koja cuva podatke orecima i njihovom broju pojavljivanja u datoteci.

    (0.5 poena) Napraviti datoteku ulaz koja sadrzi tekst u kome su vlastite imenice obelezeneviticastim zagradama. Na primer, sledeci red predstavlja jednu mogucu liniju da-totekeDanas je {Milica} isla u skolu.

    Obezbediti da datoteka sadrzi bar 100 reci, od cega bar 30 vlastitih imena, pri cemunajmanje 10 razlicitih imena.

    (0.5 poena) Napisati funkciju NapraviCvor koja alocira memoriju potrebnu za skladistenjecvora 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 uleksikografski sortiranu listu, a ukoliko postoji, uvecava njen broj pojavljivanja.

    (1 poen) Napisati program koji broji pojavljivanja vlastitih imena u datoteci cije se imezadaje kao argument komandne linije i koji stampa na standardni izlaz ono imekoje se pojavilo najveci broj puta.

    Zadatak 118 Uraditi prethodni zadatak koriscenjem binarnog pretrazivackog stablaumesto liste.

    Zadatak 119 Napisati funkciju int prebroj01(unsigned char c) koja prebrojavabroj pojavljivanja kombinacije cifara 01 u binarnom zapisu neoznacenog karaktera. Naprimer, za broj 2 (binarno 00000010) broj pojavljivanja kombinacije cifara 01 je 1, dokje za broj 10 (binarno 00001010) broj pojavljivanja kombinacije cifara 01 je 2.

    Zadatak 120 Napisati rekruzivnu funkciju int prebroj01(unsigned char c) kojaprebrojava broj pojavljivanja kombinacije cifara 01 u binarnom zapisu neoznacenogkaraktera. Na primer, za broj 2 (binarno 00000010) broj pojavljivanja kombinacijecifara 01 je 1, dok za broj 10 (binarno 00001010) broj pojavljivanja kombinacije cifara01 je 2.

    Zadatak 121 Definisimo naredni kriterijum ureenja reci: prva rec je manja od drugeukoliko je kraca; ukoliko su dve reci iste duzine, prva rec je manja od druge uko-liko je leksikografski ispred druge reci. Napisati program koji na osnovu reci koje se

    36

  • Vezba za prakticni deo ispita 37

    ucitavaju iz datoteke cije se ime zadaje kao argument komandne linije formira bina-rno pretrazivacko stablo koristeci prethodno opisan kriterijum ureenja reci. Za reciprebrojavati njihov broj pojavljivanja i to odstampati na standardni izlaz.

    Zadatak 122 Napisati program koji na standardni izlaz ispisuje naredni tekst (u beskonacnojpetlji):

    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

    Praktikum, 1. nedeljaArgumenti komandne linijeDatoteke

    Praktikum, 2. nedeljaDatotekeBitski operatori

    Praktikum, 3. nedeljaOrganizacija koda

    Praktikum, 4. nedeljaRekurzija

    Praktikum, 5. nedeljaPretraga i sortiranje

    Praktikum, 6. nedeljaSortiranje

    Praktikum, 7. nedeljaSortiranjePokazivaci na funkcijeMatrice staticki alociraneDatoteke

    Praktikum, 8. nedeljaBibliotecke funkcije qsort, bsearch, lsearch i lfindRekurzija

    Praktikum, 9. nedeljaDinamicka alokacija memorije. Matrice

    Praktikum, 10. nedeljaListeDvostruko povezane listeListe studenata

    Praktikum, 11. nedeljaListeKruna listaStek

    Praktikum, 12. nedeljaStabla

    Praktikum, 13. nedeljaStabla

    Veba za prakticni deo ispita