38
Algoritmi i strukture podataka Algoritmi i strukture podataka

ASP-1

Embed Size (px)

DESCRIPTION

ee

Citation preview

  • Algoritmi i strukture podatakaAlgoritmi i strukture podataka

  • Algoritmi i strukture podataka, 2006/07. 2 / 38

    OpOpenito o predmetuenito o predmetu

    pretpostavka:pretpostavka:zz studenti znaju operativno programirati u jeziku Cstudenti znaju operativno programirati u jeziku C

    studenti koji su eventualno uspjeli polostudenti koji su eventualno uspjeli poloiti iti Programiranje i programsko inProgramiranje i programsko inenjerstvoenjerstvo ne ne naunauivivi C, imat i C, imat e ozbiljnih e ozbiljnih problemaproblema s polaganjem ovog ispitas polaganjem ovog ispita

    manjkavosti u znanju treba pravovremeno nadoknaditimanjkavosti u znanju treba pravovremeno nadoknaditi

    osnovni koncepti struktura podataka i algoritmi nad njimaosnovni koncepti struktura podataka i algoritmi nad njimazz rekurzijarekurzijazz stogovi, redovi, liste, stabla, tablice s rasprstogovi, redovi, liste, stabla, tablice s rasprenim adresiranjemenim adresiranjemzz algoritmi pretraalgoritmi pretraivanja, sortiranja i adresiranjaivanja, sortiranja i adresiranjazz objektnoobjektno--orijentirana programska paradigmaorijentirana programska paradigma

    predmet je bio uveden jopredmet je bio uveden jo u nastavni plan FERu nastavni plan FER--1 kao zajedni1 kao zajedniki ki odlukom oba studija i svih smjerovaodlukom oba studija i svih smjerova

  • Algoritmi i strukture podataka, 2006/07. 3 / 38

    Tko i gdje predaje?Tko i gdje predaje?

    predavapredavai & asistentii & asistentizz profprof. dr. . dr. scsc. . VedranVedran MornarMornar 1.041.04 Dubravka Dubravka PukljakPukljak--ZokoviZokovizz profprof. dr. . dr. scsc. Damir . Damir KalpiKalpi 1.071.07 Andrija Andrija RubeljRubeljzz profprof. dr. . dr. scsc. Robert Manger. Robert Manger 1.091.09 Boris MilaBoris Milainoviinovizz profprof. dr. . dr. scsc. Kre. Kreimir Fertaljimir Fertalj 1.061.06 Ivana Ivana NiNietietizz docdoc. dr. . dr. scsc. Gordan . Gordan GledecGledec 1.011.01 Gordan GledecGordan Gledeczz dr. dr. scsc. . StrahilStrahil RistovRistov 1.05 1.05 Ivica Ivica BotiBotikikizz dr. dr. scsc. Nikica . Nikica HlupiHlupi 1.081.08 Hrvoje Hrvoje HegeduHegedu, Marko , Marko JurJurevievizz dr. dr. scsc. Zvonimir . Zvonimir VanjakVanjak 1.031.03 Zvonimir Zvonimir VanjakVanjakzz dr. dr. scsc. Tomislav . Tomislav PribaniPribani 1.021.02 Tomislav Tomislav RajnoviRajnovi

    administracijaadministracijazz Zavod za primijenjeno raZavod za primijenjeno raunarstvo, III kat zgrada Dunarstvo, III kat zgrada Dzz TelTel: 6: 6129129--915 (915 (gaga. . SonjaSonja MajstoroviMajstorovi))

    Obavijesti: na Obavijesti: na webweb--stranici predmetastranici predmeta ili na vratima ili na vratima Zavoda za primijenjeno raZavoda za primijenjeno raunarstvounarstvo (3. kat (3. kat zgrade D)zgrade D)zz http://www.fer.hr/predmet/http://www.fer.hr/predmet/aspasp

  • Algoritmi i strukture podataka, 2006/07. 4 / 38

    LiteraturaLiteratura

    http://www.fer.hr/predmet/http://www.fer.hr/predmet/aspasp vlastita biljevlastita biljenicanica

    Horowitz & Horowitz & SahniSahni: : Fundamentals of Computer AlgorithmsFundamentals of Computer Algorithms, Pitman, London, , Pitman, London, 19951995

    Weiss: Weiss: Data Structures and Algorithm Analysis in CData Structures and Algorithm Analysis in C, Addison Wesley, 1997, Addison Wesley, 1997 Sedgwick: Sedgwick: Algorithms in CAlgorithms in C,, AddisonAddison--Wesley, 2001Wesley, 2001 CormenCormen,, LeisersonLeiserson & & RivestRivest: : Introduction to algorithmsIntroduction to algorithms, 2/e,MIT Press, 2001, 2/e,MIT Press, 2001 Budin: Budin: Informatika za 1. razred gimnazijeInformatika za 1. razred gimnazije, Element, Zagreb, 1996, Element, Zagreb, 1996 Knuth: Knuth: Fundamental AlgorithmsFundamental Algorithms, Addison, Addison--WessleyWessley, 1973, 1973 Wirth: Wirth: Algorithms + Data Structures = ProgramsAlgorithms + Data Structures = Programs, Prentice, Prentice--Hall, 1976Hall, 1976 EckelEckel: : Thinking in C++ Vol. 1Thinking in C++ Vol. 1 (PDF u Repozitoriju predmeta)(PDF u Repozitoriju predmeta)

  • Algoritmi i strukture podataka, 2006/07. 5 / 38

    MaterijaliMaterijali

    materijali za ovaj predmet mogu se preuzeti s materijali za ovaj predmet mogu se preuzeti s webaweba u repozitoriju u repozitoriju stranice predmetastranice predmetazz http://http://www.fer.hrwww.fer.hr// Ustroj ustanove Ustroj ustanove Zavodi Zavodi ZZPPR R Predmeti Predmeti

    Algoritmi i strukture podatakaAlgoritmi i strukture podatakailiilizz http://http://www.fer.hrwww.fer.hr//predmet/predmet/aspasp

  • Algoritmi i strukture podataka, 2006/07. 6 / 38

    AnketeAnkete

    rezultati ankete rezultati ankete bitnibitni su za analizu i unapreenje nastave su za analizu i unapreenje nastavezz anonimno!anonimno!

    ulazna anketaulazna anketazz tijekom prva tri tjedna predavanja.tijekom prva tri tjedna predavanja.

    zavrzavrna anketana anketazz tijekom zadnja tri tjedna predavanjatijekom zadnja tri tjedna predavanja

    obrazac obrazac e biti objavljen na e biti objavljen na webuwebu FERFER--a a AhycoAhyco

  • Algoritmi i strukture podataka, 2006/07. 7 / 38

    Laboratorijske vjeLaboratorijske vjebebe

    pokazalo se da gotovo svi studenti imaju vlastita rapokazalo se da gotovo svi studenti imaju vlastita raunala pa mogu unala pa mogu raditi kod kuraditi kod kue, e, odnosno gdje i kad im odgovaraodnosno gdje i kad im odgovara

    za svladavanje predvienog programa i predaju domaza svladavanje predvienog programa i predaju domaih zadaih zadaa a studentima je na raspolaganju i laboratorijstudentima je na raspolaganju i laboratorij

  • Algoritmi i strukture podataka, 2006/07. 8 / 38

    OcjenjivanjeOcjenjivanje

    elementi:elementi:zz sudjelovanje u nastavi sudjelovanje u nastavi 8 %8 %zz automatsko ocjenjivanje domaautomatsko ocjenjivanje domaih zadaih zadaa (3 x 3)a (3 x 3) 9 %9 %zz automatsko ispitivanje znanja (3 x 6)automatsko ispitivanje znanja (3 x 6) 18 %18 %zz I I meuispitmeuispit 15 %15 %zz II II meuispitmeuispit 220 %0 %zz zavrzavrni ispitni ispit 330 %0 %

    za pozitivnu ocjenu (prolaz) treba ostvariti viza pozitivnu ocjenu (prolaz) treba ostvariti vie od e od 5050,,00 %00 % mogumoguih ih bodovabodova

  • Algoritmi i strukture podataka, 2006/07. 9 / 38

    Vrednovanje sudjelovanja u nastaviVrednovanje sudjelovanja u nastavi

    komponente:komponente:zz prisustvovanje na predavanju prisustvovanje na predavanju zz rjerjeavanje jednostavnih zadataka na raavanje jednostavnih zadataka na raunalu ili plounalu ili ploiizz rjerjeavanje kratkih kontrolnih zadaavanje kratkih kontrolnih zadaaa

    ukupna vrijednost komponenteukupna vrijednost komponente 8 % bodova8 % bodova

  • Algoritmi i strukture podataka, 2006/07. 10 / 38

    Vrednovanje domaVrednovanje domaih zadaih zadaaa

    ukupno ukupno tritri domadomae zadae zadaee bit bit e zadane putem e zadane putem webaweba FERFER--aa za ispravljanje odgovorni asistentiza ispravljanje odgovorni asistenti vrednovanje:vrednovanje:

    zz dohvat i predaja domadohvat i predaja domae zadae zadae u elektronie u elektronikom obliku kom obliku zz korektno objakorektno objanjenje vlastite zadanjenje vlastite zadae pred asistentome pred asistentom

    ukupna vrijednost komponenteukupna vrijednost komponente 3 x 3 = 3 x 3 = 9% bodova9% bodova

  • Algoritmi i strukture podataka, 2006/07. 11 / 38

    Vrednovanje automatskog ocjenjivanja (Vrednovanje automatskog ocjenjivanja (blicblic))

    ukupno ukupno tri automatski generirana testatri automatski generirana testa donose svaki po donose svaki po 6% bodova6% bodova u u terminima o kojima terminima o kojima e studenti biti obavijee studenti biti obavijeteni barem tjedan dana unaprijedteni barem tjedan dana unaprijed

    generirani test se rjegenerirani test se rjeava pod nadzorom deava pod nadzorom deurnog asistenta ili predavaurnog asistenta ili predavaaa studentstudent se treba samostalno i na vrijeme pripremiti se treba samostalno i na vrijeme pripremiti

    zz provjera korisniprovjera korisnikog imena i lozinke, pokusni rad sa sustavom kog imena i lozinke, pokusni rad sa sustavom AhycoAhyco uvjeuvjebavanje mogubavanje mogue preko e preko webaweba s ogranis ogranienim skupom pitanjaenim skupom pitanja komponente vrednovanja svakog testa:komponente vrednovanja svakog testa:

    zz svako od svako od 12 generiranih pitanja12 generiranih pitanja vrijedi vrijedi 0,5 % bodova0,5 % bodovazz pogrepogrean odgovor odnosi an odgovor odnosi 0,1% bodova0,1% bodovazz trajanje ispita trajanje ispita 30 minuta30 minutazz maksimalni doprinos pojedinog testa je maksimalni doprinos pojedinog testa je 6% bodova6% bodova

    ukupna vrijednost komponenteukupna vrijednost komponente 3 x 6 = 3 x 6 = 18% bodova18% bodova

  • Algoritmi i strukture podataka, 2006/07. 12 / 38

    Prvi meuispitPrvi meuispit

    ispit je pismeniispit je pismeni sastoji se od problemskih zadataka koji ukupno donose sastoji se od problemskih zadataka koji ukupno donose 1155% bodova% bodova u tjednu 26.03.2007. u tjednu 26.03.2007. 30.03.2007.30.03.2007. rjerjeenja ispravljaju asistentienja ispravljaju asistenti

  • Algoritmi i strukture podataka, 2006/07. 13 / 38

    Drugi Drugi meuispitmeuispit

    ispit je pismeniispit je pismeni sastoji se od problemskih zadataka koji ukupno donose sastoji se od problemskih zadataka koji ukupno donose 2020% bodova% bodova u tjednu 07.05.2007. u tjednu 07.05.2007. 11.05.2007.11.05.2007. rjerjeenja ispravljaju asistentienja ispravljaju asistenti

  • Algoritmi i strukture podataka, 2006/07. 14 / 38

    ZavrZavrni ispitni ispit

    ispit je pismeniispit je pismeni sastoji se od problemskih zadataka koji ukupno donose sastoji se od problemskih zadataka koji ukupno donose 330% bodova0% bodova u tjednu 18.06.2007. u tjednu 18.06.2007. 21.06.2007.21.06.2007. rjerjeenja ispravljaju asistenti, a verificiraju nastavnicienja ispravljaju asistenti, a verificiraju nastavnici

    ispitu ne mogu pristupiti studenti koji ispitu ne mogu pristupiti studenti koji e do tada prikupiti manje od e do tada prikupiti manje od 20% bodova20% bodova

  • Algoritmi i strukture podataka, 2006/07. 15 / 38

    Ponovljeni zavrPonovljeni zavrni ispitni ispit

    ispit je pismeniispit je pismeni sastoji se od problemskih zadataka koji ukupno donose sastoji se od problemskih zadataka koji ukupno donose 330% bodova0% bodova u tjednu 26.06.2007. u tjednu 26.06.2007. 29.06.2007.29.06.2007. studentima koji pristupaju ponovljenom zavrstudentima koji pristupaju ponovljenom zavrnom ispitu brinom ispitu briu se u se

    bodovi s prethodnog zavrbodovi s prethodnog zavrnog ispitanog ispita ispitu mogu pristupiti i studenti koji ispitu mogu pristupiti i studenti koji ele poveele poveati ocjenuati ocjenu

    zz ali je moguali je mogue da je i umanje ili e da je i umanje ili ak padnu na ispitu!ak padnu na ispitu! ispit ispravljaju asistenti, a verificiraju nastavniciispit ispravljaju asistenti, a verificiraju nastavnici

  • Algoritmi i strukture podataka, 2006/07. 16 / 38

    Ocjenjivanje Ocjenjivanje GaussGauss

    15% 15% -- 55 35% 35% -- 44 35% 35% -- 33 15% 15% -- 22

    ...od onih koji su ostvarili vi...od onih koji su ostvarili vie od 50% bodova e od 50% bodova

  • Algoritmi i strukture podataka, 2006/07. 17 / 38

    KonzultacijeKonzultacije

    konzultacije kod izvoditelja nastavekonzultacije kod izvoditelja nastavezz svaki dan od 12svaki dan od 12--13h ili prema dogovoru s nastavnikom13h ili prema dogovoru s nastavnikom

    Zavod za primijenjeno raZavod za primijenjeno raunarstvounarstvo Zgrada D/III kat, sjeverozapadno krilo Zgrada D/III kat, sjeverozapadno krilo

    zz donijeti donijeti vlastite biljevlastite biljekeke s nastave!s nastave! sve primjedbe i upite vezane uz predmet sve primjedbe i upite vezane uz predmet aljite na:aljite na:

    zz ee--mail adresu predavamail adresu predavaa koji izvodi nastavua koji izvodi nastavu adresa oblikaadresa oblika [email protected]@fer.hr

    zz SubjectSubject: [: [ASPASP]]zz podesite svoje programe za slanje elektronipodesite svoje programe za slanje elektronike poke pote tako da koriste vate tako da koriste vae e

    puno puno ime i prezime ime i prezime i u potpisu navedite svoji u potpisu navedite svoj matimatini brojni broj

  • Algoritmi i strukture podataka, 2006/07. 18 / 38

    Plan nastavePlan nastave

    prvi ciklus (5 tjedana)prvi ciklus (5 tjedana)zz utvrivanje gradiva iz prethodnog semestrautvrivanje gradiva iz prethodnog semestrazz algoritmi, sloalgoritmi, sloenost algoritma, tehnike adresiranjaenost algoritma, tehnike adresiranjazz poziv funkcije na sistemskom stogu, poziv funkcije na sistemskom stogu, rekurzijarekurzija

    drugi ciklus (4 tjedna)drugi ciklus (4 tjedna)zz sortiranje sortiranje zz uvod u objektno programiranjeuvod u objektno programiranjezz stogstog

    tretrei ciklus (4 tjedna)i ciklus (4 tjedna)zz red, jednostruko i dvostruko povezane listered, jednostruko i dvostruko povezane listezz stablastablazz gomila kao prioritetni red, gomila kao prioritetni red, heapsortheapsort

  • Utvrivanje gradiva iz PIPIUtvrivanje gradiva iz PIPI--jaja

    PokazivaPokazivai i DatotekeDatotekeDinamiDinamika rezervacija memorijeka rezervacija memorije

  • Algoritmi i strukture podataka, 2006/07. 20 / 38

    PokazivaPokazivaii

    to e se ispisati izvoenjem sljedeeg programskog odsjeka?Pokazivac

    #include

    int main () {

    int a = 4;

    int *b;

    b = &a;

    *b = 8;

    printf ("%d %d\n", a, *b);

    return 0;

    }

    to se rezervira u memoriji?

    to je u programu b?

    to je u programu *b?

    to bi se dogodilo da nema ovog?

  • Algoritmi i strukture podataka, 2006/07. 21 / 38

    RjeRjeenjeenje

    to bi se dogodilo kad bismo izostavili liniju b = &a; ?z Budui da pokaziva b prije pridruivanja vrijednosti pokazuje na

    nedefiniranu adresu, moglo bi doi do pokuaja upisivanja vrijednosti 8 na adresu koja je rezervirana za pohranu drugih varijabli ili koda, to moe izazvati neoekivano ponaanje ili pogreku pri izvoenju programa zbog neovlatenog pristupa dijelu memorije.

    z uvijek treba inicijalizirati vrijednost pokazivaa prije upotrebez program u MS Visual C++ zavrava pogrekom zbog koritenja varijable

    koja nije definirana

  • Algoritmi i strukture podataka, 2006/07. 22 / 38

    void zamijeni (int tri, int sedam) { // call by value

    int pom;

    pom = tri;

    tri = sedam;

    sedam = pom;

    }

    int main () {

    int tri=3, sedam=7;

    zamijeni (tri, sedam);

    return 0;

    }

    Razmjena podataka s funkcijom Razmjena podataka s funkcijom -- callcall byby valuevalue

    KomunikacijaSFunkcijama

  • Algoritmi i strukture podataka, 2006/07. 23 / 38

    void zamijeni (int *tri, int *sedam) { // call by reference

    int pom;

    pom = *tri;

    *tri = *sedam;

    *sedam = pom;

    }

    int main () {

    int tri=3, sedam=7;

    zamijeni (&tri, &sedam);

    return 0;

    }

    Razmjena podataka s funkcijom Razmjena podataka s funkcijom -- callcall byby referencereference

    KomunikacijaSFunkcijama

  • Algoritmi i strukture podataka, 2006/07. 24 / 38

    void zamijeni (int *tri, int *sedam) {

    int *pom; // lokalna zamjena adresa

    pom = tri;

    tri = sedam;

    sedam = pom;

    }

    int main () {

    int tri=3, sedam=7;

    zamijeni (&tri, &sedam);

    return 0;

    }

    Razmjena podataka s funkcijom Razmjena podataka s funkcijom -- lokalna zamjena adresalokalna zamjena adresa

    KomunikacijaSFunkcijama

  • Algoritmi i strukture podataka, 2006/07. 25 / 38

    Rezervacija i oslobaanje memorijeRezervacija i oslobaanje memorije

    Definicijom polja uvijek se u memoriji rezervira prostor za najvDefinicijom polja uvijek se u memoriji rezervira prostor za najveei oi oekivani broj ekivani broj lanova polja:lanova polja:

    no, najno, najeee e emo raditi s mnogo manjim brojem emo raditi s mnogo manjim brojem lanova poljalanova polja jojo jedna jedna esta greesta greka:ka:

    bolji je pristup od rabolji je pristup od raunala zatraunala zatraiti toiti tonu potrebnu kolinu potrebnu koliinu memorije:inu memorije:zz mallocmalloczz reallocrealloczz freefree

    ##includeinclude

    int polje [1000];int polje [1000]; Koliko bajtova se rezervira?

    scanf("%d", &n);

    int polje[n];

  • Algoritmi i strukture podataka, 2006/07. 26 / 38

    Rezervacija memorijeRezervacija memorije

    rezervira blok velirezervira blok veliine ine sizesize bajtova u memoriji i bajtova u memoriji i vravraaa pokazivapokazivana taj blokna taj blok

    ako blok traako blok traene veliene veliine nije mogao biti rezerviran, vraine nije mogao biti rezerviran, vraa a NULLNULLpokazivapokaziva. .

    pokazivapokaziva na nedefinirani tip podataka (pokazivana nedefinirani tip podataka (pokaziva na na bilo bilo toto))zz momoe se, bez gubitka podataka, pretvoriti u bilo koji drugi tip poke se, bez gubitka podataka, pretvoriti u bilo koji drugi tip pokazivaazivaaa

    PrimjerZaMallocPrimjerZaMalloc

    ##includeinclude

    voidvoid **mallocmalloc ((sizesize_t _t sizesize););

    voidvoid **

  • Algoritmi i strukture podataka, 2006/07. 27 / 38

    Promjena rezervacije memorije

    ako se prije rezervirani blok moako se prije rezervirani blok moe proe proiriti na veliiriti na veliinu inu sizesize, , proproiruje gairuje ga

    ako nema mjesta u memoriji, ako nema mjesta u memoriji, kopirakopira sadrsadraj starog bloka na aj starog bloka na novunovulokaciju na kojoj ima mjesta za lokaciju na kojoj ima mjesta za sizesize bajtovabajtova

    ako nigdje u memoriji nema ako nigdje u memoriji nema sizesize bajtova slobodnog mjesta, vrabajtova slobodnog mjesta, vraa a NULLNULL

    zz ako je ako je blockblock zapravo zapravo NULLNULL pokazivapokaziva, funkcija radi kao , funkcija radi kao mallocmalloc

    ##includeinclude

    voidvoid **reallocrealloc ((voidvoid **blockblock, , sizesize_t _t sizesize););

  • Algoritmi i strukture podataka, 2006/07. 28 / 38

    Oslobaanje memorijeOslobaanje memorije

    oslobaa blok memorije na koji pokazuje pokazivaoslobaa blok memorije na koji pokazuje pokaziva blockblock pokazivapokaziva blockblock smije biti samo jedan od pokazivasmije biti samo jedan od pokazivaa nastalih a nastalih

    prethodnim pozivima funkcije prethodnim pozivima funkcije mallocmalloc ili ili reallocrealloc

    ##includeinclude

    voidvoid freefree ((voidvoid **blockblock););

  • Algoritmi i strukture podataka, 2006/07. 29 / 38

    Primjer s rezervacijom memorijePrimjer s rezervacijom memorije

    Na disku se nalazi Na disku se nalazi slijedna formatiranaslijedna formatirana datoteka polje u kojoj se u svakom retku datoteka polje u kojoj se u svakom retku nalazi jedan cijeli broj. nalazi jedan cijeli broj. zz uuitati sadritati sadraj datoteke u memoriju raaj datoteke u memoriju raunala kao jednodimenzionalno polje. unala kao jednodimenzionalno polje. zz u memoriji rau memoriji raunala formirati kvadratnu matricu kojoj su elementi prvog retka unala formirati kvadratnu matricu kojoj su elementi prvog retka jednaki jednaki

    elementima uelementima uitanog jednodimenzionalnog polja, a elementi ostalih redaka poteitanog jednodimenzionalnog polja, a elementi ostalih redaka potencije ncije elemenata prvog retka (drugi redak=druga potencija, treelemenata prvog retka (drugi redak=druga potencija, trei trei trea a itditd.).)

    zz formiranu matricu upisati na disk u slijednu neformatiranu datotformiranu matricu upisati na disk u slijednu neformatiranu datoteku eku npoljenpolje tako da na tako da na popoetku bude zapisan broj redaka odnosno stupaca matrice (int), a zetku bude zapisan broj redaka odnosno stupaca matrice (int), a zatim elementi matrice atim elementi matrice po po retcimaretcima. .

    NprNpr. datoteku . datoteku poljepolje treba utreba uitati u jednodimenzionalno polje i itati u jednodimenzionalno polje i formirati matricuformirati matricu

    123

    1 2 31 4 91 8 27

  • Algoritmi i strukture podataka, 2006/07. 30 / 38

    Primjer s rezervacijom memorije: rezulPrimjer s rezervacijom memorije: rezultat izvoenjatat izvoenja

    Ulazni podaci: Ulazni podaci: Ispis na zaslonu:Ispis na zaslonu:

    MallocMatricaMallocMatrica

    32485

    33 22 44 8 8 55

    99 44 1616 6464 2525

    2727 88 6464 512512 125125

    8181 1616 256256 40964096 625625

    243243 3232 10241024 3276832768 31253125

  • Algoritmi i strukture podataka, 2006/07. 31 / 38

    Polja pokazivaPolja pokazivaaa

    Deklaracija Deklaracija

    rezervira u memoriji polje od 3 elementa rezervira u memoriji polje od 3 elementa iji se iji se lanovilanovip[0]p[0], , p[1]p[1] i i p[2]p[2] tipa tipa charchar **

    to moto moemo promatrati kaoemo promatrati kao

    ???

    charchar *p[3];*p[3];

  • Algoritmi i strukture podataka, 2006/07. 32 / 38

    PrimjerPrimjer

    NaNainiti program koji initi program koji e sadre sadraj slijedne formatirane datoteke aj slijedne formatirane datoteke prepisati u drugu datoteku redak po redak, ali od posljednjeg reprepisati u drugu datoteku redak po redak, ali od posljednjeg retka tka prema prvom. Imena datoteka treba zadati iz naredbenog retka.prema prvom. Imena datoteka treba zadati iz naredbenog retka.

    RjeRjeenje s enje s realociranjemrealociranjem memorijememorijeRealloc

    0

    10

    21

    32

    45

    prvi red\n

    drugi red\n

    treci red\n

    cetvrti red\n

    peti red\n

  • Zadaci za vjeZadaci za vjebubu

    PokazivaPokazivaiiPoljaPoljaZapisiZapisiDatotekeDatoteke

  • Algoritmi i strukture podataka, 2006/07. 34 / 38

    PokazivaPokazivaii

    Napisati funkciju koja Napisati funkciju koja e iz zadanog JMBGe iz zadanog JMBG--a vratiti datum roenja a vratiti datum roenja kao niz znakova u obliku kao niz znakova u obliku DD.MM.GGGGDD.MM.GGGG. Memorijski prostor . Memorijski prostor potreban za novi niz znakova obavezno zauzeti u funkciji (funkcipotreban za novi niz znakova obavezno zauzeti u funkciji (funkcija ja mallocmalloc).).

    DatumJMBGDatumJMBG

  • Algoritmi i strukture podataka, 2006/07. 35 / 38

    Polja Polja -- 11

    Iz slijedne formatirane datoteke Iz slijedne formatirane datoteke UlazZaDvodimenzionalnoPoljeUlazZaDvodimenzionalnoPolje..txttxtproproitati itati broj redaka i stupacabroj redaka i stupaca cjelobrojnog polja, zatim cjelobrojnog polja, zatim redom redom itati itati vrijednostivrijednosti. .

    Ispisati Ispisati lanove dvodimenzionalnog polja zajedno s indeksima lanove dvodimenzionalnog polja zajedno s indeksima dvodimenzionalnog i indeksom analognog jednodimenzionalnog dvodimenzionalnog i indeksom analognog jednodimenzionalnog polja. Za zadane indekse dvodimenzionalnog polja izrapolja. Za zadane indekse dvodimenzionalnog polja izraunavati unavati pripadni indeks analognog jednodimenzionalnog polja i ispisivatipripadni indeks analognog jednodimenzionalnog polja i ispisivatisadrsadraj.aj. DvodimenzionalnoPoljeDvodimenzionalnoPolje

  • Algoritmi i strukture podataka, 2006/07. 36 / 38

    Polja Polja -- 22

    Napisati funkciju koja raNapisati funkciju koja rauna una zbroj pozitivnih elemenatazbroj pozitivnih elemenatadvodimenzionalnog polja, te prikazati poziv funkcije iz glavnog dvodimenzionalnog polja, te prikazati poziv funkcije iz glavnog programa.programa.zz Podsjetnik: dvodimenzionalno polje se u funkciju prenosi kao Podsjetnik: dvodimenzionalno polje se u funkciju prenosi kao

    jednodimenzionalno. Pohranjeno je po jednodimenzionalno. Pohranjeno je po retcimaretcima pa se elementu p[i,j] pa se elementu p[i,j] pristupa kao p [i*pristupa kao p [i*maxstupmaxstup + j]. + j].

    SumaUPoljuSumaUPolju

  • Algoritmi i strukture podataka, 2006/07. 37 / 38

    Zapisi i datotekeZapisi i datoteke

    Iz slijedne datoteke Iz slijedne datoteke studenti.studenti.txttxt treba stvoriti direktnu datoteku treba stvoriti direktnu datoteku studenti.datstudenti.dat u u kojoj je struktura zapisa: kojoj je struktura zapisa:

    Napisati funkciju koja dohvaNapisati funkciju koja dohvaa podatke o studentu sa zadanim matia podatke o studentu sa zadanim matinim nim brojem te ga potom bribrojem te ga potom brie iz datoteke. Matie iz datoteke. Matini broj studenta odgovara rednom ni broj studenta odgovara rednom broju zapisa. Prazan zapis sadrbroju zapisa. Prazan zapis sadri i mbrmbr jednak jednak 00..DohvatiBrisiDohvatiBrisi

    to ako se pokuto ako se pokua dohvatiti po negativnom matia dohvatiti po negativnom matinom broju?nom broju?

    structstruct zapis {zapis {

    int int mbrmbr; ; // 3 znamenke// 3 znamenke

    charchar ime [40+1];ime [40+1];

    charchar spol [1+1];spol [1+1];

    }}

  • Algoritmi i strukture podataka, 2006/07. 38 / 38

    Zapisi i datotekeZapisi i datoteke

    U poreznoj upravi u U poreznoj upravi u slijednoj neformatiranojslijednoj neformatiranoj datoteci datoteci porez.dat porez.dat postoje podaci s postoje podaci s poreznih kartica poreznih obveznika. Bitni podaci su:poreznih kartica poreznih obveznika. Bitni podaci su:zz JMBG (13+1 znamenka),JMBG (13+1 znamenka),zz ime i prezime (40+1 znak), ime i prezime (40+1 znak), zz ukupni prijavljeni prihod (ukupni prijavljeni prihod (floatfloat) i ) i zz iznos poreza koji joiznos poreza koji jo moraju platiti (moraju platiti (floatfloat). ).

    Na poNa poetku datoteke je upisan jedan podatak tipa etku datoteke je upisan jedan podatak tipa longlong koji govori koliko ima koji govori koliko ima zapisa u datoteci. Potrebno je napisati glavni program sa sljedezapisa u datoteci. Potrebno je napisati glavni program sa sljedeim dijelovima:im dijelovima:zz funkcijom koja ufunkcijom koja uitava sadritava sadraj datoteke u dinamiaj datoteke u dinamiki alocirano polje struktura ki alocirano polje struktura zz funkcijom koja nalazi poreznog obveznika koji mora platiti najvefunkcijom koja nalazi poreznog obveznika koji mora platiti najvei porezi porez

    Porez

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure true /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles true /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /NA /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /LeaveUntagged /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice