OO1PP2
– DZ5 Rok
za izradu: 14.06.2007.
PRAKTIKUM IZ PROGRAMIRANJA 2
-
domaći zadatak broj 5 -
Sastaviti
program na programskom jeziku C kojim se vrši konverzija
tekst datoteka sa podacima o kontaktima (address book) iz jednog formata u
drugi, uz određenu vrstu obrade nad podacima. Program
treba da pročita ulaznu datoteku, smesti podatke u odgovarajuću
listu, izvrši odgovarajuću obradu nad ulaznim podacima, upiše
rezultat u odgovarajuće datoteke i dealocira svu alociranu dinamičku
memoriju.
Zavisno od rednog broja
problema, sastaviti jedan od sledećih programa, kojim se vrši
sledeća konverzija:
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. Svaku obradu koja se ponavlja više od jednom smestiti u zasebnu
funkciju. Nije dozvoljeno korišćenje globalnih promenljivih, sva
razmena podataka između funkcija mora ići preko liste argumenata i
povratne vrednosti funkcija. Opisi odgovarajućih formata ulaznih i
izlaznih datoteka su dati u prilogu.
U zavisnosti od rednog broja problema koji se rešava osmisliti
sopstvenu strukturu/strukture za smeštanje podataka iz ulazne datoteke.
Element liste koja sadrži podatke iz ulazne/ulaznih datoteka treba
realizovati kao strukturu koja ima tačno tri polja – pokazivače
na prethodni i sledeći element, i pokazivač na strukturu koja
sadrži podatke. Voditi računa o pravilnoj alokaciji i dealokaciji
dinamičke memorije.
U zavisnosti da li je definisana simbolička konstanta CMD_LINE,
omogućiti da se ime ulazne i izlazne datoteke unosi preko argumenata
komandne linije ili preko glavnog ulaza, što se određuje uslovnim
prevođenjem, u zavisnosti od trenutne aktivne konfiguracije za
prevođenje programa. U slučaju rada preko glavnog ulaza, pre
prepisivanja omogućiti brisanje kontakta koji u imenu (bilo koje name polje) sadrži
određeni string. Ukoliko postoji više kontakata koji zadovoljavaju dati
kriterijum, ispisati/obrisati ih sve.
U slučaju bilo kakve greške (poziv programa sa
neodgovarajućim brojem argumenata komandne linije, neuspešna dodela
dinamičke memorije, greška pri radu sa datotekom), kod za grešku
proslediti do glavnog programa preko povratne vrednosti funkcije, ispisati
odgovarajuću poruku i prekinuti izvršavanje. Ispisivanje poruke o
greškama vršiti samo iz glavnog programa.
Ako
nešto u postavci zadatka nije dovoljno precizno definisano ili ako su neki
od zahteva međusobno suprotstavljeni, usvojiti razumnu pretpostavku i
rešiti zadatak korišćenjem te pretpostavke. Na samoj odbrani
obavestiti demonstratora o usvojenoj pretpostavci/pretpostavkama.
Sugeriše
se studentima da kao pomoć prilikom izrade i testiranja svojih
rešenja pogledaju aplikacije MS Address Book i Mozilla Thunderbird,
pošto one podržavaju većinu navedenih formata, a biće
korišćene prilikom testiranja domaćih zadataka na samoj odbrani.
Napomene:
1.
Odbrana petog domaćeg zadatka je u RC ETF, u
četvrtak, 14. juna, prema rasporedu koji se može videti na sistemu
WebLab.
2.
Primeri ulaznih i izlaznih datoteka za gornje probleme
će biti dostupni na sajtu predmeta najkasnije nekoliko dana pred odbranu
domaćeg zadatka
3.
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
4.
Poželjno razvojno okruženje za domaći
zadatak broj 5 je Visual C++ 6.0
5.
Kao rešenje domaćeg zadatka potrebno je na
odbrani pokazati sledeće datoteke:
· dz5.h, koja
sadrži prototipe svih funkcija opisanih u postavci zadatka;
· dz5.c, koja sadrži
izvorni tekst osnovnog programa na programskom jeziku 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.dsp, koja sadrži informacije o projektu koji sadrži sve potrebno za
osnovni program;
· dz5.dsw, koja sadrži informacije o svim projektima relevatnim za ovaj
zadatak;
· dz5_test1.txt, dz5_test2.txt, dz5_test3.txt koje sadrže nekoliko test
primera koje su kandidati sami osmislili.
06.06.2007. godine sa predmeta