OO1PP1 – DZ4 Rok
za izradu: 26.12.2008.
PRAKTIKUM IZ PROGRAMIRANJA 1
- domaći zadatak broj 4 -
Sastaviti program na programskom jeziku Pascal, koji radi sa tekst
datotekama po sledećem
redosledu izvršavanja:
a) poziva potprogram koji učitava imena datoteka sa kojima će
raditi,
b) poziva odgovarajući potprogram koji izvrši traženu obradu
nad datotekama,
c) ponavlja prethodne korake sve dok korisnik za ime datoteke
ne zada prazan string.
Zavisno od rednog broja problema, sastaviti program, koji:
0.
čita ulaznu datoteku koja sadrži podatke o stanju u magacinu,
po formatu šifraArtikla, naziv,
količina (šifra artikla - ceo broj, naziv - string do 30 znakova,
količina - realan broj) i koja može u susednim redovima imati podatke o istim
artiklima (ista šifra i naziv); program u izlaznu datoteku, koji ima isti
format kao i ulazni, štampa zbirne podatke o količini robe;
1.
čita dve ulazne datoteke (oba istog formata kao u tački 0,
oba sortirana po šifri artikla); potrebno je napraviti izlaznu datoteku (istog
formata kao ulaznu) koja sadrži zbirne podatke o artiklima (za svaku šifru i
naziv sadrži sumu količine koja se nalazi u obe datoteke); u jednoj datoteci nema
ponavljanja podataka o istom artiklu; podaci o količini nekog artikla se mogu,
ali ne moraju nalaziti u obe datoteke;
2. čita ulaznu datoteku koja sadrži podatke o knjigama u biblioteci u formatu idKnjige, nazivKnjige, imePisca, prezimePisca, brojPrimeraka; dela istog pisca će biti u susednim redovima (ako ih ima više); treba formirati izlazni fajl koji će imati format PrezimePisca, ImePisca, broj knjiga, gde je poslednja stavka ukupan broj primeraka knjiga tog pisca koje bibilioteka ima;
3. čita ulaznu datoteku
koja predstavlja račun kupca i ima format šifraArtikla, količina, cenaJednogArtikla, naziv gde je šifraArtikla ceo broj, količina i cena
su celi brojevi, naziv je string do 30 znakova; podaci o
istom artiklu će biti u susednim redovima (ako ih ima više); potrebno je
napraviti izlaznu datoteku koja ima format šifraArtikla, naziv, zbirnaCena, gde je poslednja
stavka iznos novca koji treba dati za sve artikle sa tom šifrom;
4. čita ulaznu datoteku
koja predstavlja evidenciju o angažovanju demonstratora i koji ima sledeći format:
šifraPredmeta, ime, prezime, brojRadnihSati (ime, prezime, šifra predmeta – string do 20 znakova, broj
radnog sata i cena radnog sata – ceo broj); različita angažovanja istog
demonstratora će biti u susednim redovima; potrebno je napraviti datoteku po formatu ime, prezime, zarada,
gde je zarada ukupna količina novca koju treba isplatiti demonstratoru; cenu
radnog sata korisnik unosi sa glavnog ulaza.
Po uspešnom rešavanju osnovnog zadatka, napraviti modifikaciju programa tako da program obrađuje samo one
linije iz ulaznih datoteka čiji je redni broj u skupu vrednosti koje korisnik
unese sa tastature. U svakoj varijanti zadatka korigovati ime i prezime pisca/demonstratora,
odnosno svaki naziv artikla ako je potrebno, tako da u izlaznoj datoteci svi
stringovi imaju veliko početno slovo, a sva ostala slova mala (na primer: piVo promeniti u Pivo).
Pretpostaviti da svi stringovi sadrže tačno jednu reč.
Program treba da čita ulaznu datoteku uz vođenje računa o tipu podataka
koji se čita. Za sve podatke koje ima smisla
grupisati, osmisliti sopstveni tip zapisa i koristiti promenljive tog tipa,
tamo gde je to moguće. Podatke iz datoteka nije dozvoljeno smeštati u bilo
kakvu zbirku podataka u memoriji. Dozvoljeno je pamtiti samo podatke od
interesa za tekući predmet obrade (artikal/pisac/demonstrator). Smatrati da ulazna datoteka ima 0 ili više
redova. Smatrati da dužine redova nisu veće od 80. 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. Osmisliti i napisati na papiru nekoliko primera ulaznih podataka
sa kojima će se program testirati, kao i očekivani izlaz za odabrane primere.
Test primere otkucati u bilo kom tekst editoru i priložiti zajedno sa tekstom
programa. Potprogrami ne smeju pristupati promenljivama glavnog
programa direktno, već samo putem svojih argumenata.
Napomene:
1.
Odbrana
četvrtog domaćeg zadatka je u petak, 26.12.2008. godine. Tačni termini za sve studente su objavljeni
u okviru sistema 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:
·
dz4.PAS, koja sadrži izvorni tekst programa na programskom jeziku Pascal;
·
dz4_mod.PAS, koji sadrži
modifikovani program koji radi sa skupovima;
·
dz4_u1.txt, …, dz4_uN.txt, koje sadrže nekoliko odabranih test primera kojima
će program biti testiran.
16.12.2008. godine sa predmeta