OO1PP2 – DZ5                                                                                   Rok za izradu: 19.06.2008.

PRAKTIKUM IZ PROGRAMIRANJA 2

- domaći zadatak broj 5 -

Sastaviti program na programskom jeziku C koji vrši konverziju datoteke sa titlovima iz jednog formata u drugi, uz pomeranje titlova u vremenu. Program dobija ime ulazne datoteke, ime izlazne datoteke, i pomeraj u vremenu, respektivno, preko argumenata komandne linije. Pomeraj u vremenu je racionalan broj. Vremenska jedinica koju treba podrazumevati za pomeraj je sekunda. Program treba da pročita celu ulaznu datoteku sa titlovima i pri tome smesti sve podatke o titlovima u odgovarajuću listu, zatim prođe kroz listu i izvrši ažuriranje podataka o vremenu, potom upiše sve podatke u izlaznu datoteku i na kraju dealocira svu alociranu dinamičku memoriju.

Zavisno od rednog broja problema, sastaviti jedan od sledećih programa, koji, uz pomeranje titlova u vremenu, vrši sledeće prepisivanje:

  1. iz SubRip (.SRT) datoteke u MicroDVD (.TXT ili .SUB) datoteku;
  2. iz MicroDVD (.TXT ili .SUB) datoteke u SubRip (.SRT) datoteku;
  3. iz MicroDVD (.TXT ili .SUB) datoteke u TIME baziranu MPlayer MPsub datoteku;
  4. iz TIME bazirane MPlayer MPsub datoteke (.SUB) u MicroDVD (.TXT ili .SUB) datoteku;
  5. iz MicroDVD (.TXT ili .SUB) datoteke u MicroDVD (.TXT ili .SUB) datoteku;

Glavni program treba da poziva funkcije koje obavljaju gorenavedene 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. Uzeti da je za tekst svakog titla dovoljno MAX_LEN znakova. Pri konverziji voditi računa o ispravnoj konverziji znakova koji služe za obeležavanje prelaska u naredni red teksta kod ulaznog, odnosno izlaznog formata titlova. Elemente liste koja sadrži informacije o titlovima realizovati kao strukturu sa tačno tri polja – pokazivač na prethodni element, pokazivač na sledeći element i pokazivač na strukturu sa informacijama o samom titlu. Struktura sa informacijama treba da sadrži tri polja – vreme pojavljivanja, vreme uklanjanja i tekst titla. 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.

Pretpostaviti da video zapis može imati jednu od dve vrednosti za broj slika u sekundi (23.976 i 25, fps = frames per second). Sve proračune obavljati sa simboličkom konstantom FPS_NUM, čija će vrednost biti određena uslovnim prevođenjem, zavisno od konfiguracije projekta koja bude odabrana za dato prevođenje programa. Informacije o primeni i formatima titlova, primeri sadržaja datoteka sa titlovima, kao i informacije o funkcijama potrebnim za očitavanje trenutnog i utrošenog vremena, su u pratećem dokumentu.

Napomene:

1.      Odbrana petog domaćeg zadatka je u RC ETF, u četvrtak, 19. juna, 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 5

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.

03.06.2008. godine                                                                                                  sa predmeta