OO1PP2 – DZ2                                                                                   Rok za izradu: 29.04.2010.

PRAKTIKUM IZ PROGRAMIRANJA 2

- domaći zadatak broj 2 -

Sastaviti program na programskom jeziku C koji vrši određenu vrstu obrade nad jednom ili više matrica podataka odgovarajućeg tipa. Program treba da repetitivno učitava sve potrebne ulazne podatke, ispisuje ih po učitavanju, izvršava zahtevanu obradu, ispisuje sve dobijene rezultate i ponavlja navedene korake, sve dok korisnik za neki od podataka ne unese karakterističnu vrednost.

Zavisno od rednog broja problema, sastaviti jedan od sledećih programa, koji:

0.   za svaku dijagonalu kvadratne matrice, paralelnu sporednoj dijagonali, računa i ispisuje sumu elemenata matrice koji toj dijagonali pripadaju;

1.   uređuje kolone matrice po nerastućoj ili neopadajućoj vrednosti na osnovu formiranog niza minimuma elemenata matrice po kolonama;

2.   pronalazi minimum maksmuma po vrstama date matrice a zatim sve elemente matrice podiže na stepen koji odgovara zbiru rednog broja vrste i kolone;

3.   za svaki element matrice računa broj susednih elemenata koji su veći od posmatranog (najviše 8 suseda) i u novu matricu, na odgovarajućoj poziciji upisuje izračunat broj;

4.   izračunava razliku proizvoda dve kvadratne matrice A i B: A*BT – B*AT;

5.   u svakoj vrsti matrice računa dužinu najdužeg nerastućeg podniza, a zatim uređuje vrste po neopadajućoj vrednosti dobijenih dužina;

6.   menja sadržaj sporedne dijagonale matrice koja je popunjena celim brojevima, na sledeći način: u svako polje se upisuje minimum brojeva sa polovine dijagonale koja sadrži to polje i koja je paralelna glavnoj dijagonali; uzima se u obzir gornja, odnosno donja polovina ukoliko je posmatrani element sporedne dijagonale paran, odnosno neparan respektivno;

Pri zadavanju matrice, program treba prvo da učita dimenzije, a zatim matricu popuni pseudoslučajnim brojevima, čiji opseg treba da učita sa glavnog ulaza. Kod ispisivanja matrice, program treba da ispiše jednu vrstu po liniji ispisanog teksta. Osmisliti i napisati na papiru nekoliko primera ulaznih podataka sa kojima će program biti testiran, kao i očekivani izlaz za te primere. Kandidati koji ne na odbrani nemaju spremna makar tri suštinski različita test primera ne mogu dobiti maksimalan broj poena.

Po rešavanju osnovnog zadatka, modifikovati rešenje, tako da program za smeštanje matrice koristi dinamičku memoriju i jedan (i samo jedan!) statički pokazivač odgovarajućeg tipa. U toku rada, prilikom svake alokacije 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.

Napomene:

1.   Odbrana drugog domaćeg zadatka je u četvrtak, 29.04.2010. po rasporedu dostupnom putem 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 7

3.   Kao rešenje domaćeg zadatka potrebno je na odbrani pokazati sledeće datoteke:

·      dz2.c, koja sadrži izvorni tekst osnovnog programa na programskom jeziku C;

·      dz2_mod.c, koja sadrži izvorni tekst izmenjenog programa na programskom jeziku C;

20.04.2010. godine                                                                                                   sa predmeta