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:

  1. svi elementi matrice koji više od x% odstupaju od aritmetičke sredine matrice se podignu na stepen koji odgovara zbiru rednih brojeva vrste i kolone; x se unosi sa standardnog ulaza;
  2. određuje pozicije elemenata koji najviše odstupaju od aritmetičke sredine elemenata u svojoj vrsti/koloni i ispisuje te elemente;
  3. određuje najveća i najmanja razlika kvadrata korespondentnih elemenata (koji su na istom mestu) u dve matrice i ispisuju pozicije odgovarajućih elemenata;
  4. prebrojavaju elementi matrice koji su istovremeno najveći u svojoj vrsti i najmanji u svojoj koloni i ispisuju njihove pozicije;
  5. elementi matrice čiji je zbir rednih brojeva vrste i kolone deljiv zadatim brojem b se zamenjuju aritmetičkom sredinom svih svojih suseda;
  6. elementi matrice koji su manji od aritmetičke sredine svojih suseda zamenjuju susedom koji ima najveću vrednost od svih suseda;
  7. određuje geometrijska sredina elemenata matrice kod kojih je zbir indeksa vrste i kolone neparan broj;
  8. pronalazi i ispisuje najveća geometrijska sredina bilo vrsta, bilo kolona u matrici;
  9. svi elementi matrice manji od zbira elemenata na sporednoj dijagonali matrice se zamenjuju tim zbirom;

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