OO1PP2 – DZ2                                                                                   Rok za izradu: 23.04.2009.

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:

  1. pronalazi i ispisuje podmatricu ulazne matrice, takvu da među podmatricama istih dimenzija ima najveću sumu sadržanih elemenata; dimenzije podmatrice korisnik unosi sa glavnog ulaza;
  2. u svakoj vrsti matrice računa dužinu najdužeg nerastućeg niza, a zatim uređuje vrste po neopadajućoj vrednosti dobijenih dužina;
  3. računa sume dijagonalnih suseda svakog elementa matrice, a zatim uređuje elemente svake kolone po nerastućoj vrednosti izračunatih suma;
  4. uprošćeno simulira računarsku igru Minesweeper; vrednost -1 elementa matrice označava polje sa minom; ostale vrednosti označavaju slobodna polja; potrebno je u svako slobodno polje upisati broj mina koje ga okružuju i ispisati pozicije polja okruženih sa najviše mina;
  5. uređuje vrste matrice jednocifrenih nenegativnih celih brojeva, po sledećem: za svaku vrstu odredi vrednost broja dobijenog nadovezivanjem elemenata date vrste (npr. vrsta sa elementima 0 1 0 3 daje broj 103), pa uredi vrste po neopadajućoj vrednosti dobijenog broja; smatrati da je broj kolona matrice n≤9; pri izračunavanju koristiti promenljive tipa long;
  6. elemente matrice zamenjuje zbirom sopstvenih cifara, stepenuje na zadati realni stepen, a zatim pronalazi maksimum i minimum tako dobijenih vrednosti;
  7. računa i ispisuje sume elemenata pravougaonih okvira matrice neparnih dimenzija; primeri:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

Važno: 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 lab. 26, u četvrtak, 23. aprila, prema rasporedu objavljenom preko 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 modifikovanog programa na programskom jeziku C;

10.04.2009. godine                                                                                                  sa predmeta