четвртак, 18. јануар 2018.

Takmicenje iz programiranja 2017 - Pripreme - 6. cas - cetvrtak 18.01 - Matrica

Drage takmičarke i dragi takmičari,
 
Na današnjem času priprema za takmičenje smo objašnjavali matrice (uvodni deo), odnosno dodatno pojasnili sadržaj mejla od 24.12, koji ponovo prosleđujem u nastavku.
 
Takođe, razjasnisili smo da program FlowGorithm ne možemo koristiti za rešavanje zadataka u kojima se koriste matrice, sem možda u specijalnim slučajavima kada je broj redova ili kolona relativno mali, pa da u tom slučaju koristimo nekoliko promenljivih tipa niz. Inače, matrica se u svim programskim jezicima tretira i kao niz nizova, odnosno 2D niz i zahteva 2 ugnježdena brojačka ciklusa (i 2 brojača) za učitavanje i prikazivanje vrednosti svih elemenata matrice.
 
U prilogu se nalazi osnovni primer (za učitavanje i prikazivanje vrednosti elemenata matrice) koji smo danas detaljnije objašnjavali.
 
Pomenuli smo i kvadratne matrice (kada je broj redova i broj kolona isti), kao i glavnu i sporednu dijagonalu kvadratne matrice.
 
Na kraju, prvi put smo obratili pažnju na brzinu izvršavanja brojačkih ciklusa i napravili grubu računicu (pod pretpostavkom da se jedan algoritamski korak izvršava za 1 milijarditi deo sekunde) za matrice dimenzija 1000x1000, 10,000x10,000, 100,000x100,000 i milion x milion.
 
Preporuka je da svako od vas pregleda i sledeće uvodne materijale o matricama:
Kao i uvodne materijale na portalu nasaskola.edu.rs, ali sa napomenom da su u tim materijalima za predstavljanje matrice korišćene vizuelne komponente u grafičkom okruženju, te se naredbe za ulaze i izlaze znatno razlikuju u odnosu na konzolne aplikacije:
 
Dogovor je da sutra, u petak 19.januara, nakon 6.časa se okupite u gornjem kabinetu, kako bi nastavili sa pripremama.
 
Pozdrav,
Dragan Ilić
 
----- Original Message -----
Sent: Sunday, December 24, 2017 12:25 AM
Subject: Takmicenje iz programiranja 2017 - 1. krug kvalifikacija - 2. zadatak - Pripreme - Matrica

Dragi takmičari,
 
Za rešavanje 2. zadatka neopodno je da se najpre upoznamo sa najlakšim uvodnim zadatkom iz kvadratnih matrica, koji bi glasio ovako:
 
Dati su elementi kvadratne matrice A dimenzija NxN. Napisati program koji će omogućiti unos svih elementa matrice, a zatim će prikazati sve elemente te matrice.
 
Za rad sa matricama najbolje je da koristimo brojačke ciklse (FOR), a neophodno je da:
  1. Deklarišemo matricu kao promenljivu
    Var A: Array [1..10, 1..10 ] Of Integer;
    Što značo da imamo maksimalno po 10 redova i po 10 kolona, odnosno 100 elemenata matrice.
    Svi elementi matrice A moraju biti istog tipa (u ovom slučaju integer).
  2. Na početku programa moramo najpre da unesemo koliko imamo redova (odnosno kolona) tj broj N koji mora biti manji od maksimalnog broja redova (10).
  3. Kroz elemente matrice prolazimo koristeći dva brojačka ciklusa i dva brojača i i j. Svaki od njih ide od 1 do N.
  4. Radi se o dve ugnježdene petlje, prva sporija po redovima (brojač i) i druga brža po kolonama (brojač j).
  5. Obratite pažnju na naredbu učitavanja elemenata (uvek je Read, nije ReadLn).
  6. Kada učitamo sve elemente matrice, odnosno izađemo iz obe petlje, možemo da radimo nešto drugo sa elementima matrice, ali ponovo ćemo koristiti for petlje i to obe, da bi prošli kroz sve elemente matrice, ipak, ukoliko je iz nekog razloga potrebno, možemo da pristupimo i pojedinačnom elementu matrice, ali moramo da navedemo oba indeksa, kao na primer: Max := A [4, 6];
  7. Štampanje elemenata matrice je skoro potpuno isto kao i učitavanje, samo što umesto Read koristimo Write, ali zbog preglednosti uvodimo još jednu naredbui (WriteLn) nakon štampanja elementa u poslednjoj koloni, kako bi prebacili kursor u novi red. Takođe, kako vrednosti elemenata ne bi bili slepljeni jedni uz druge, koristimo formatiranje u naredbi Write tako što navodimo broj pozicija za prikaziovanje cifara iza dve tačke.
Razmislite sada kako bi rešili sledeće zadatke:
  1. Data je matrica A od NxN elemenata. Izračunati zbir svih elemenata matrice A.
  2. Data je matrica A od NxN elemenata. Izračunati aritmetički sredinu elemenata matrice A.
  3. Data je matrica A od NxN elemenata. Izračunati (pronaći) najveći element matrice A.
  4. Data je matrica A od NxN elemenata. Izračunati (pronaći) indeks (u kom redu i kojoj koloni je) najvećeg elementa matrice A.
  5. Data je matrica A od NxN elemenata. Prebrojati koliko elemenata matrice A je veći od 5.
  6. Data je matrica A od NxN elemenata. Izračunati zbir svih elemenata na glavnoj dijagonali matrice (glavna dijagonala je od gornjeg levo do donjeg desnog ugla).
Pozdrav,
Dragan Ilić

Нема коментара: