Upload
schweini31
View
15
Download
6
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