OO1PP1 – DZ5 Rok za izradu: 28.12.2009.
PRAKTIKUM IZ PROGRAMIRANJA 1
- domaći zadatak broj 5 -
Sastaviti program na programskom jeziku Pascal koji radi sa listama i datotekama na sledeći način:
a) poziva potprogram koji učitava sve potrebne podatke iz ulazne binarne datoteke u jednostruko ulančanu listu, tako da redosled podataka u listi bude isti kao u datoteci;
b) poziva odgovarajući potprogram koji izvrši traženu obradu nad datom listom;
c) poziva potprogram koji ispisuje sve rezultate dobijene u toku obrade;
d) poziva potprogram koji listu briše iz memorije;
e) ponavlja prethodne korake dok korisnik za ime ulazne datoteke ne unese prazan string.
Zavisno od rednog broja problema, program treba da izvrši sledeću obradu:
0. računa ocenu na takmičenju u skokovima u vodu; zapis binarne datoteke se sastoji od imena takmičara, koeficijenta težine skoka (T) i 4 ocene – za odraz (O), let (L), ulazak u vodu (U) i opšti utisak (S); ukupna ocena se računa kao T*(O+L+U+S); iz liste izbaciti zapise sa ocenom manjom od vrednosti unete putem glavnog ulaza, a zatim urediti preostale zapise po nerastućoj vrednosti ukupne ocene; u izlaznu tekst datoteku ispisati uređene zapise u obliku takmičar ocena, kao i prosečnu ocenu;
1. vrši računanje kamate; zapis binarne datoteke se sastoji od početnog kapitala (K), kamatne stope (P, u %) i vremena (N, u godinama); krajnji kapital se računa kao K*(1+P/100)N; iz liste izbaciti zapise sa krajnjim kapitalom manjim od vrednosti unete putem glavnog ulaza, a zatim urediti preostale zapise po nerastućoj vrednosti krajnjeg kapitala; u izlaznu tekst datoteku ispisati uređene zapise u obliku početni_kapital krajnji_kapital, kao i prosečnu vrednost krajnjeg kapitala;
2. bira najpovoljniju kupovinu auta iz inostranstva; zapis binarne datoteke se sastoji od imena države, stope PDV-a (P, u %), carinske stope (C, u %) i cene auta (A); konačna cena se računa kao A*(1+P/100)*(1-C/100); iz liste izbaciti zapise sa konačnom cenom većom od broja unetog putem glavnog ulaza, a zatim urediti preostale zapise po neopadajućoj vrednosti konačne cene; u izlaznu tekst datoteku ispisati uređene zapise u obliku zemlja cena, kao i prosečnu cenu;
3. računa vreme potrebno za završetak trke Formule 1; zapis binarne datoteke se sastoji od imena staze, broja krugova (N), dužine jednog kruga (L, u km) i prosečne brzine koja se ostvaruje (V, u km/h); vreme potrebno za završetak se računa kao N*L/V; iz liste izbaciti zapise s vremenom manjim od vrednosti unete putem glavnog ulaza, a zatim urediti preostale zapise po nerastućoj vrednosti vremena; u izlaznu tekst datoteku ispisati uređene zapise u obliku staza vreme, kao i prosečno vreme;
4. računa dnevni pazar KST-a; zapis binarne datoteke se sastoji od naziva artikla, početnog stanja, krajnjeg stanja i cene artikla; parcijalni pazar se računa kao suma razlike početnog i krajnjeg stanja pomnožene sa cenom artikla; iz liste izbaciti artikle koji nisu prodavani, a zatim urediti preostale artikle po nerastućoj vrednosti pazara; u izlaznu tekst datoteku ispisati uređene zapise u obliku naziv pazar, kao i ukupan pazar;
Elementi liste su zapisi koji imaju dva polja. Prvo polje je tipa zapisa, čija polja sadrže sve bitne podatke, prema tekstu zadatka. Drugo polje je pokazivač na sledeći element liste. Format izlazne tekst datoteke usvojiti prema tekstu zadatka, tako da sadrži relevantne, ali ne i nepotrebne informacije. Vrednosti kumulativnih rezultata (prosečna ocena, ukupni pazar itd.) odrediti na osnovu elemenata koji ostanu u listi nakon izbacivanja onih koji ne zadovoljavaju kriterijum određen postavkom zadatka i upisati ih na kraju izlazne tekst datoteke, posle podataka o uređenim zapisima. 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. Makar jedan od test primera mora imati više od 5 zapisa. Potprogrami ne smeju pristupati promenljivama glavnog programa direktno, već samo putem svojih argumenata.
Važno: da bi bilo moguće jednostavno stvoriti ulazne binarne datoteke, napraviti i pomoćni program koji čita podatke sa standardnog ulaza i upisuje ih u binarnu datoteku, sa kojom će glavni program kasnije raditi.
Napomene:
1. Odbrana petog domaćeg zadatka je u ponedeljak, 28.12.2009. 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:
· dz5.PAS, koja sadrži izvorni tekst osnovnog programa na programskom jeziku Pascal;
· dz5_pom.PAS, koja sadrži izvorni tekst pomoćnog programa.
10.12.2009. godine sa predmeta