OO1PP2 – DZ5                                                                                   Rok za izradu: 28.05.2009.

PRAKTIKUM IZ PROGRAMIRANJA 2

- domaći zadatak broj 5 -

Sastaviti program na programskom jeziku C koji vrši obradu datoteka koje predstavljaju muzičke plej-liste i konverziju tih datoteka iz jednog formata u drugi. Program dobija imena datoteka sa kojima će raditi preko argumenata komandne linije. Program treba da učita sve podatke iz ulazne datoteke/ulaznih datoteka u listu, izvrši obradu nad učitanim podacima, upiše podatke u izlaznu datoteku i i na kraju dealocira svu dinamički alociranu memoriju.

Zavisno od rednog broja problema, sastaviti jedan od sledećih programa, koji:

0.   sortira po dužini trajanja muzičke numere iz liste u M3U formatu, izbacuje sve koje u imenu izvođača imaju string učitan sa standardnog ulaza i čuva dobijenu listu u ASX formatu;

1.   sortira po nazivu pesme muzičke numere iz liste u PLS formatu, zatim izbacuje sve koje su kraće od vremena učitanog sa standardnog ulaza i čuva dobijenu listu u ASX formatu;

2.   sortira po imenu izvođača muzičke numere iz liste u M3U formatu, zatim izbacuje sve koje su duže od vremena koje je učitano sa standardnog ulaza i čuva dobijenu listu u PLS formatu;

3.   sortira po dužini trajanja muzičke numere iz liste u PLS formatu, izbacuje sve koje u nazivu sadrže string koji je učitan sa standardnog ulaza i čuva dobijenu listu u M3U formatu;

4.   učitava dve plej-liste u M3U formatu, koje su već sortirane po nazivu numere, iz svake izbacuje numere čija je dužina trajanja van zadatog intervala i dobijene liste spaja u jednu listu u PLS formatu, takođe sortiranu po nazivu; granice intervala unosi korisnik sa standardnog ulaza;

5.   učitava dve plejliste u PLS formatu, koje su već sortirane po dužini trajanja numere; iz svake izbacuje numere koje u nazivu sadrže string učitan sa standardnog ulaza i dobijene liste spaja u jednu listu u ASX formatu, takođe sortiranu po dužini trajanja numere;

Svaki naziv numere ima format Ime izvođača – naziv numere. Po završenoj obradi na standardni izlaz ispisati broj numera u ulaznoj datoteci/ulaznim datotekama i izlaznoj datoteci, trajanje dobijene plej-liste, kao i ime izvođača koji u izlaznoj plej-listi ima najveći broj numera.

Glavni program treba da poziva funkcije koje obavljaju iznad navedene radnje. Sve funkcije smestiti u odgovarajuće .c datoteke (prema donjem spisku), a prototipove svih funkcija smestiti u zajedničku .h datoteku. Nije dozvoljeno korišćenje globalnih promenljivih, sva razmena podataka između funkcija mora ići preko liste argumenata. Elemente liste koja sadrži informacije o numeri u plej-listi realizovati kao strukturu sa tačno tri polja – pokazivač na prethodni element, pokazivač na sledeći element i pokazivač na strukturu sa informacijama o samoj numeri. U slučaju bilo kakve greške (poziv programa sa neodgovarajućim brojem argumenata komandne linije, ili sa neispravnim argumentom za pomeraj, neuspešna dodela dinamičke memorije, greška pri radu sa datotekom), ispisati odgovarajuću poruku i prekinuti izvršavanje. Na početku i na kraju izvršavanja programa ispisati tačno vreme, a na kraju i procesorsko vreme (u milisekundama) koje je program utrošio za svoje izvršavanje. Tačno vreme ispisivati samo ako je pri prevođenju definisana simbolička konstanta TACNO_VREME. Informacije o formatima i primere plej-listi, o funkcijama potrebnim za očitavanje trenutnog i utrošenog vremena, kao i o uslovnom prevođenju, su u pratećem dokumentu.

Napomene:

1.   Odbrana petog domaćeg zadatka je u lab. 26, u četvrtak, 28. maja, prema rasporedu objavljenom na sistemu WebLab.

2.   Formula za redni broj problema i koji treba rešavati je sledeća (R – redni broj indeksa, G – poslednje dve cifre godine upisa): i = (R + G) mod 6

3.   Kao rešenje domaćeg zadatka potrebno je na odbrani pokazati sledeće datoteke:

·    dz5.c, koja sadrži izvorni tekst osnovnog programa na programskom jeziku C;

·    dz5.h, koja sadrži prototipove svih funkcija opisanih u postavci zadatka;

·    dz5_init.c, dz5_load.c, dz5_save.c, dz5_process.c, koje sadrže izvorne tekstove funkcija potrebnih za inicijalizaciju programa, čitanje, snimanje i obradu titlova;

·    dz5.vcproj, koja sadrži informacije o projektu koji sadrži sve potrebno za osnovni program;

·    dz5.sln, koja sadrži informacije o svim projektima relevatnim za ovaj zadatak.

13.05.2009. godine                                                                                               sa predmeta