210 likes | 396 Views
Saša Divjak. Programiranje in algoritmi. Kar ni bilo povedano na predavanjih Kar ni bilo dovoj jasno Kar vas zanima. Začetek ob 20.00. Kaj bomo spoznali. Domača naloga Izgled datoteke PNG Branje binarnih datotek Tvorba povezanega seznama S ortiranje. Primer datoteke png. Editor.
E N D
Saša Divjak Programiranje in algoritmi Karnibilopovedanonapredavanjih Karnibilodovojjasno Kar vas zanima Začetekob 20.00
Kajbomospoznali • Domačanaloga • Izgleddatoteke PNG • Branjebinarnihdatotek • Tvorbapovezanegaseznama • Sortiranje
Primer datotekepng Editor Learner.png Na srečo je možnodatoteko PNG prepoznatitudibrezustreznekončnice, tako da se pogleda, čedatotekavsebujevsepotrebne dele, zaprikazslike. Vsebinadatoteke PNG je sestavljenanasledečnačin: Najprej je t.i. magičnoštevilo, ki mu sledizaporedjablokov: magičnoštevilo, blok1, blok2 .... blokN
Začetniblok Magičnoštevilo Magičnoštevilo je dolgo 8 bajtov in morabitisestavljenoizštevil: 137,80,78,71,13,10,26,10. Vsakblok je sestavljennasledečnačin: Najprej je podanadolžinapodatkovnegadelabloka v bajtih (4 bajti), tip bloka (4 bajti), sledipodatkovni del bloka (tolikobajtov, kot je podanadolžina) in povzetekbloka (4 bajti).
Širina Višina širina = 0 * 2563 + 0 * 2562 + 0*2561 + 190*2560 = 190 višina= 0 * 2563 + 0 * 2562 + 1*2561+ 94*2560 = 350 Podatkovnidel pa vsebuješirinoslike (4 bajti), višinoslike (4 bajti), sledi pa še 5 polj o lastnostihslike (vsakpo en bajt):
Learner.png 190 x 350 Pujsek.aaa 206 x 142 Zaba.aaa 86 x78 learner.png miska.jpg pujsek.aaa zaba.tif pujsek.gif pes.gif zaba.aaa veverica.bmp Datoteka z imenidatotek V programskemjeziku C napišite program, kikot argument ukaznevrsticedobiimetekstovnedatoteko, kivsebujeimenadatotek (vsakoime v svojivrstice, imenidaljše od 499 znakov in ne vsebujepresledkov), kijihželimopregledati. Na standardniizhod pa zatistedatotekeizseznama, kiustrezajopravilom o datotekah PNG, izpišiteimedatoteke in velikostslike. Primeridatotek
learner.png miska.jpg pujsek.aaa zaba.tif pujsek.gif pes.gif zaba.aaa veverica.bmp learner.png 190 350 Začetekseznama pujsek.aaa 206 142 zaba.aaa Program najvsebujefunkcijo, kinapodlagiprejetegaimenadatoteke (vhodni parameter), vrnekazalecnastrukturo, kihraniimedatoteketervelikostslike oz. NULL, čedatoteka ne ustrezapravilom o datotekah PNG. Vrnjenestrukturehranite v povezanseznam 86 78
Learner.png 190 x 350 Pujsek.aaa 206 x 142 Zaba.aaa 86 x78 learner.png 190 350 zacetekSeznama pujsek.aaa 206 142 zaba.aaa 86 Na standardniizhod pa zatistedatotekeizseznama, kiustrezajopravilom o datotekah PNG, izpišiteimedatoteke in velikostslike. 78
Kakotvorimopovezaniseznam? • Seznam2.ppt Na mestu the številsizamisliteimedatoteke in velikostslike 0 1 2 3 4 5 6 7 8 0 head
Izpispovezanegaseznama Nekajtemupodobnega node * ptr =head;while(ptr!=NULL){printf(“%d “, ptr->podatek);ptr=ptr->next;}printf(“\n”); WEB
Kaj pa sortiranjeseznamov ? NEOBVEZNO: Izpisdatoteknajbourejenpošteviluslikovnihelementovslike od največje do najmanjše. Najprejnekaj o Bubble sort poljapodatkov Primer sortiranjapovezanegaseznama
Spomnimo se šeenkratizpisaseznama… structlnode { int data; structlnode *next; } *head, *visit; 4 2 3 5 // tvorbaseznama, nanjkažekazalec head visit = head; while(visit != NULL) { printf("%d\t", visit->data); visit = visit->next; } visit head … in sioglejmosortiranjeseznama
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 4 2 3 5 c b a e tmp head
while (e != head->next) { c = a = head; b = a->next; while(a != e) { if(a->data > b->data) { if(a == head) { tmp = b -> next; b->next = a; a->next = tmp; head = b; c = b; } 2 4 3 5 c b a e tmp head