OO1PP1 – DZ5                                                                                   Rok za izradu: 30.12.2008.

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 bude isti i u datoteci i u listi;

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, sastaviti program, koji:

  1. računa indeks korisnosti (IK) košarkaša na jednoj utakmici; zapis binarne datoteke sadrži podatke o prezimenu i imenu igrača, postignutim  poenima (p), skokovima (s), faulovima (f) i izgubljenim loptama (il); IK se računa po formuli 0.5*p+0.8*s-0.6*f-2*il; urediti zapise po nerastućim vrednostima IK, pa iz liste izbaciti zapise koji predstavljaju igrače sa negativnim IK; u izlaznu tekst datoteku ispisati preostale zapise u formi prezime ime IK i prosečni IK preostalih zapisa;
  2. računa ukupnu kvotu tiketa za klađenje; zapis binarne datoteke se odnosi na jedan par timova i sadrži nazive domaćeg i gostujućeg tima, prognoziran ishod i kvote za slučajeve pobede domaćeg tima, nerešenog ishoda i pobede gostujućeg tima, tim redom; ishod određuje pojedinačnu kvotu i predstavljen je sa 1 (pobeda domaćih), 0 (nerešeno) ili 2 (pobeda gostiju); ukupna kvota tiketa se računa kao proizvod pojedinačnih; urediti zapise po neopadajućoj vrednosti kvote prognoziranog ishoda, pa iz liste izbaciti sve zapise sa kvotom prognoziranog ishoda većom od unetog broja; u izlaznu tekst datoteku ispisati preostale zapise u formi tim1 tim2 prognozirani_ishod kvota_prognoziranog_ishoda i ukupnu kvotu tiketa;
  3. računa indeks telesne mase (BMI, Body Mass Index); zapis binarne datoteke sadrži prezime, ime, masu (kg) i visinu (cm) osobe; BMI se računa kao masa/visina_u_metrima2; urediti zapise po nerastućim vrednostima BMI, pa iz liste izbaciti osobe čiji je BMI van unetog intervala; u izlaznu tekst datoteku ispisati preostale osobe u formi prezime ime BMI i prosečan BMI;
  4. određuje plivače kvalifikovane za Olimpijske igre na 4x100m mešovito; zapis binarne datoteke sadrži prezime i ime plivača i ostvarena vremena za svaku od 4 deonice (u sekundama); urediti zapise po nerastućim vrednostima ukupnog ostvarenog vremena, a zatim izbaciti plivače sporije od unetog vremena olimpijske norme; u izlaznu tekst datoteku ispisati preostale zapise u formi redni_broj prezime ime ukupno_vreme i prosečno ostvareno vreme;
  5. računa prirodni priraštaj (PP) država; zapis binarne datoteke sadrži naziv države, broj rođenih (natalitet - N) i broj umrlih (mortalitet - M) u toku jedne godine i ukupan broj stanovnika (S); PP se računa kao 1000*(N - M)/S; urediti zapise po nerastućoj vrednosti PP, a zatim izbaciti zapise koji predstavljaju države čiji je PP van unetog intervala; u izlaznu tekst datoteku ispisati preostale zapise u formi naziv_države PP i prosečan PP;

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čan IK, ukupna kvota tiketa itd.) odrediti na osnovu elemenata koji ostanu u listi nakon izbacivanja onih koji ne zadovoljavaju kriterijum određen postavkom zadatka. 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. Potprogrami ne smeju pristupati promenljivama glavnog programa direktno, već samo putem svojih argumenata.

Važno: 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 utorak, 30.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:

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

·      dz5_pom.PAS, koja sadrži izvorni tekst pomoćnog programa.

19.12.2008. godine                                                                                                  sa predmeta