OO1PP2 – DZ3 Rok
za izradu: 24.05.2007.
PRAKTIKUM IZ PROGRAMIRANJA 2
- domaći
zadatak broj 3 -
Sastaviti program na programskom jeziku C kojim se vrši
određena vrsta obrade nad jednom ili više matrica tipa float. Program
treba da repetitivno učitava sve potrebne ulazne
podatke, ispiše ih po učitavanju, izvršava zahtevanu obradu,
ispisuje sve dobijene rezultate, i ponavlja navedene korake sve dok se za neki
od podataka ne unese karakteristična vrednost. Sve navedene korake
realizovati kao zasebne potprograme (unos podataka, ispis unetih podataka,
obrada, ispis rezultata) koji, po potrebi, mogu pozivati druge, jednostavnije,
potprograme.
Zavisno od rednog
broja problema, sastaviti jedan od sledećih
programa, kojim se:
Za
smeštanje matrice koristiti dinamičku memoriju i jedan (i samo
jedan!) pokazivač odgovarajućeg tipa. Pri zadavanju matrice, prvo se
učitavaju dimenzije, a zatim matrica popunjava pseudoslučajnim brojevima, čiji opseg se učitava sa
glavnog ulaza. Kod ispisivanja matrice, ispisivati jednu vrstu po liniji
ispisanog teksta. Kod programa koji menjaju sadržaj matrice, ispisati
sadržaj matrice i pre i posle obrade. Podrazumevati da su u programima gde se radi sa dve ulazne
matrice, te matrice istih dimenzija. U toku rada, prilikom svake alokacije ili realokacije dinamičke memorije, proveravati
uspešnost poziva funkcije. U slučaju neuspešne dodele dinamičke
memorije, ispisati poruku o grešci i prekinuti izvršavanje programa.
Nakon svakog ciklusa programa (unos, obrada, ispis) dealocirati svu
dinamičku memoriju. Programski kod rešenja zadatka treba da bude
uredno komentarisan, tako da se pri pregledu programa lako može
uočiti šta radi bilo koja programska celina.
Važno: kada se uspešno reši osnovni zadatak,
modifikovati osnovni program, tako da se nakon osnovne obrade omogući
ispis bitova realnog broja koji se nalazi u, na pseudoslučajan
način, izabranoj vrsti i koloni, a zatim izbace iz matrice ta izabrana
vrsta i kolona. Prilikom izbacivanja vrste i kolone iz matrice potrebno je
izvršiti odgovarajuću realokaciju
dinamičke memorije. Izabrani element treba ispisati tako da se jasno
razlikuju delovi realnog broja (znak, eksponent i mantisa).
Napomene:
1. Termin odbrane drugog domaćeg zadatka studenti mogu videti 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 9
3. Kao rešenje domaćeg zadatka potrebno je na odbrani pokazati sledeće datoteke:
· dz3.c, koja sadrži izvorni tekst osnovnog programa na programskom jeziku C;
· dz3_mod.c, koja sadrži izvorni tekst izmenjenog programa na programskom jeziku C;
17.05.2007. godine sa predmeta