Šta su to nizovi?
Nizovi su složeni tipovi podataka koji se sastoje od određenog broja elemenata međusobno istog tipa koji mogu biti osnovni ili izvedeni (složeni).
Definišite niza karaktera od 5 elemenat i inicijalizujte ga:
char nizKaraktera[5] = {'a','b','c','d','e'}; Niz čiji su elementi nizovi prostih podataka je dvodimenzionalni niz.
Za označavanje elemenata jednodimenzionalnog niza potreban je jedan indeks a[i]. Za označavanje elemenata dvodimenzionalnog niza potreban su da indeksa A[i][j].
a[3] – predstavlja četvrti element niza(11)
A[2][3] – element dvodimenzionalnog koji se nalazi u trećem redu i četvrtoj koloni(5)
Niz čiji su elementi dvodimenzionalni nizovi je trodimenzionalni niz.
Niz čiji su elementi (n-1)dimenzionalni nizovi su n dimenzionni nizovi.
DEFINISANJE VIŠEDIMENZIONOG NIZA
Opšti oblik definisanja višedimenzionog niza:
tip naziv [dužina1][ dužina2].......[ dužinan];
tip – identifikator jednog od osnovnih tipova podataka (int, char, float, double)
naziv – identifikator višedimenzionalnog niza
dužina1, dužina2, dužinan – broj elemenata višedimenzionog niza po pojedinim dimenzijama
PRIMERI:
1) Definisati matricu celih brojeva 20x30
2) Definisati trodimenzionalni niz realnih brojeva 10x11x12
3) Definisati matricu karaktera 20x50
INICIJALIZACIJA VIŠEDIMENZIONALNIH NIZOVA
Primer inicijalizacije jednodimenzionalnog niza!!!
int a[6] = {1,2,3,4,5,6};
Primeri inicijalizacije višedimenzionalnih nizova:
int a[2][3] = {1,2,3,4,5,6}; //nepregledna inicijalizacija
Najpogodnije je višedimenzionalni niz inicijalizovati po svakoj dimenziji.
int a[2][3] = {{1,2,3},{4,5,6}}
int b[2][3][3] = {{{2,3,4},{9,10,11},{17,20,21}},{{39,42,45},{47,49,57},{61,68,79}}};
int a[] = {1,2,3,4};
int c[][3] = {{1,2},{3,4,5},{6}};
int d[][3] = {1,2,3,4,5,6};
int e[]; //Greška mora se ili navesti dimenzija ili da se obavi inicijalizacija
int e[][7]; //Greška mora se ili navesti dimenzija ili da se obavi inicijalizacija
int d[][] = {1,2,3,4,5,6}; //Greška navođenje ostalih dimenzija je obavezno
Ako su u pojedinim dimenzijama izostavljeni članovi višedimenzionalnog niza podrazumevani članovi su nule.
int c[4][3] = {{1,2},{3,4,5},{6}};
je isto što i
int c[4][3] = {{1,2,0},{3,4,5},{6,0,0},{0,0,0}};PRIMERI nepravilne inicijalizacije višedimenzionalnog niza
int f[2][3] = {{1},{2},{3}};
// Broj redova prilikom inicijalizacije je veći nego dozovljen
int g[2][3] = {{1},{2,3,4,5}};
// Broj elemenata u drugoj dimenziji je veći nego što je dozvoljeno
int e[2][3] = {1,2,3,4,5,6,7};
// Broj elemenata višedimenzionalnog niza je veći od predviđenogPRISTUPANJE ELEMENTIMA VIŠEDIMENZIONALNOG NIZA
int mat[3][4] = {{5,6,7,8},{71,72,73,74},{31,32,33,34}};
//Ispis elementa u drugom redu i trećoj koloni:
printf("%d",mat[1][2]);
//Izmena vrednosti elementa u četvrtom redu i drugoj koloni:
mat[3][1] = 15;
PROGRAMSKA MANIPULACIJA MATRICAMA
Manipulacija matricama se najčešće obavlja preko ugnježedenih for petlji gde je jedna spoljašnja a druga unutrašnja. Obilazak matrica može da bude po vrstama. U ovom slučaju se za prolazak kroz vrste matrice koristi spoljašnja a za prolazak kroz kolone matrice koristi unutrašnja for petlja. Obilazak matrica može da bude po kolonama. U ovom slučaju se za prolazak kroz kolone matrice koristi spoljašnja a za prolazak kroz vrste matrice koristi unutrašnja for petlja.
Sve operacije sem ispisa matrice(isključivo po vrstama) mogu da se urade i po vrstama i po kolonama matrice!!!
UNOŠENJE ELEMENATA U MATRICU
//a)Unos elemenata po vrstama
//Programski kod:
int a[3][4];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("Unesite element matrice[%d][%d]",i+1,j+1);
scanf("%d",&a[i][j]);
}
}
1) i=0, i<3
a. j=0, j<4, a[0][0]
b. j=1, j<4, a[0][1]
c. j=2, j<4, a[0][2]
d. j=3, j<4 a[0][3]
e. j=4, sada uslov više nije tačan
2) i=1,i<3
a. j=0, j<4, a[1][0]
...
Domaći zadatak1: napisati algoritam i kod za unos elemenata matrice po kolonama!!!
Domaći zadatak2: napisati algoritam i kod za ispis elemenata matrice po vrstama!!!
One matrice koje imaju isti broj kolona i vrsta nazivaju se kvadratne matrice.
Kvadrtane matrice imaju glavnu i sporednu dijagonalu.
Transponovanje matrice
Kvadratne matrice mogu da se tranponuju. Transponovanje matrice predstavlja zamenu vrednosti redova i kolona matrice.
Napomena: Prilikom transponovanja potreno je privremeno sačuvati jedan оd elemenata koji menjaju mesto u pomoćnu promenljivu.
SMEŠTANJE (STATIČKIH) VIŠEDIMENZIONIH NIZOVA U MEMORIJU
Broj memorijskih lokacija koje zauzima višedimenzioni niz se dobija tako što se pomnože veličine svih dimenzija višedimenzionog niza i veličina u bajtovima koju zauzima jedan podataka matrice.
Zadaci sa matricama
Zadatak1: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se ispisuju elementi te matrice. Za to napišite posebnu funckiju.
Zadatak2: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se određuje suma elemenata te matrice. Prolaziti kroz matricu po kolonama. Za to napišite posebnu funckiju.
Zadatak3: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se određuje koliko ima neparnih elementa te matrice. Prolaziti kroz matricu po vrstama. Za to napišite posebnu funckiju.
Zadatak4: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se ispisuju elementi glavne dijagonale matrice. Za to napišite posebnu funckiju.
Zadatak5: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se ispisuju elementi sporedne dijagonale matrice. Za to napišite posebnu funckiju.
Zadatak6: Definišite kvadratnu matricu celih brojeva proizvoljne veličine. Napišite program kojim se ispisuju elementi transponovane matrice. Za to napišite posebnu funckiju.
Zadatak7: Definišite matricu celih brojeva proizvoljne veličine. Napišite program kojim se određuje najveći element matrice. Prolaziti kroz matricu po kolonama. Za to napišite posebnu funckiju.
Zadatak8: Definišite matricu karaktera proizvoljne veličine. Napišite program kojim se određuje broj samoglasnika u matrici. Prolaziti kroz matricu po vrstama. Za to napišite posebnu funckiju.
Zadatak9: Definišite matricu celih brojeva proizvoljne veličine. Napišite program u kojem se ispisuju najveći elementi svake vrste matrice. Prolaziti kroz matricu po vrstama. Za to napišite posebnu funckiju.
Zadatak10: Definišite matricu celih brojeva proizvoljne veličine. Napišite program u kojem se ispisuju prosečna vrednost elemenata svake kolone matrice. Prolaziti kroz matricu po kolonama. Za to napišite posebnu funckiju.
SABIRANJE I ODUZIMANJE MATRICA I MNOŽENJE MATRICE SA SKALAROM
//DEO KODA ZA SABIRANJE DVE MATRICE PO VRSTAMA
if((v1==v2)&&(k1==k2))
{
for(i=0;i<v1;i++)
{
for(j=0;j<k1;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
else
{
printf("Dve matrice se ne mogu sabrati jer nisu istih dimenzija");
}Zadatak 1: Napisati program u kojem će se inicijalizovati dve matrice tako da imaju isti broj redova i kolona i napisati funkciju za sabiranje te dve matrice po redovima.
Zadatak 2: Napisati program u kojem će se inicijalizovati dve matrice tako da imaju isti broj redova i kolona i napisati funkciju za oduzimanje te dve matrice po kolonama.
Zadatak 3: Napisati program u kojem će se inicijalizovati matrica i napisati funkciju za množenje matrice skalarom.
Zadatak 1:
Napisati program za unos dve matrice, ispis elemenata dve matrice, izračunavanje zbira dve matrice, množenja matrice skalarom i transponovanje matrice. Program treba da sadrži sledeće funkcije (potprograme) UnosMatrice, IspisMatrice, ZbirMatrica, MnozenjeSkalarom, Transponovanje. Program treba da sadrži sistem menija sa sledećim opcijama: 1) Unos elemenata matrice A i B 2) Ispsi elemenata matrice A i B 3)Sabiranje matrica A i B 4) Mnozenje matrice A ili B skalarom (korisnik bira matricu) 5)Transponovanje matrice A ili B (korisnik bira matricu) 6) Kraj programa. Operacije matricama obaviti po vrstama. Treba obezbediti zaštitu da se ispis i bilo koja operacija ne može izvršiti dok se nisu unele matrice. Broj vrsta i kolona unosi korisnik, matrica ne može da bude veća od 20x20. Matrice se mogu sabrati ako imaju jednak broj vrsta i kolona inače ispisati poruku. Matrice se mogu transponovati ako su kvadratne inače ispisati poruku. Posle transponovanja ispisati matricu. Program realizovati pomoću potprograma: za unos matrice, ispis, sabiranje dve matrice, množenje matrice skalarom i transponovanje matrice. Napisati potprogram za realizaciju menija.
printf("\t\t\tRad sa statickim matricama po vrstama");
printf("\n\tOdaberite zeljenu opciju");
printf("\n\t1) Unos elemenata matrice A i B");
printf("\n\t2) Ispis elemenata matrice A i B");
printf("\n\t3) Sabiranje matrice A i B");
printf("\n\t4) Mnozenje matrice A ili B skalarom");
printf("\n\t5) Transponovanje matrice A ili B");
printf("\n\t6) Kraj programa");
printf("\n\tOdaberite opciju:");Zadatak 2:
Napisati program za unos dve matrice, ispis elemenata dve matrice, izračunavanje razlika dve matrice, oderđivanje najvećeg elementa matrice i određivanje prosečne vrednosti svake vrste matrice. Program treba da sadrži sledeće funkcije (potprograme)UnosMatrice, IspisMatrice, RazlikaMatrica, NajvecaVrednost, IspisProsecnihVrednostiVrsta. Program treba da sadrži sistem menija sa sledećim opcijama: 1) Unos elemenata matrice A i B 2) Ispis elemenata matrice A i B 3)Razlika matrica A i B 4) Najveći element matrice (korisnik bira matricu) 5)Prosečna vrednost kolona matrice(korisnik bira matricu) 6) Kraj programa. Operacije matricama obaviti po kolonama. Treba obezbediti zaštitu da se ispis i bilo koja operacija ne može izvršiti dok se nisu unele matrice. Broj vrsta i kolona unosi korisnik, matrica ne može da bude veća od 20x20. Matrice se mogu oduzimati ako imaju jednak broj vrsta i kolona inače ispisati poruku. Program realizovati pomoću potprograma: za unos matrice, ispis, razlika dve matrice, najveći element matrice i prosečna vrednost svake vrste matrice. Napisati potprogram za realizaciju menija.
printf("\t\t\tRad sa statickim matricama po kolonama");
printf("\n\tOdaberite zeljenu opciju");
printf("\n\t1) Unos elemenata matrice A i B");
printf("\n\t2) Ispis elemenata matrice A i B");
printf("\n\t3) Razlika matrice A i B");
printf("\n\t4) Najveci element matrice");
printf("\n\t5) Prosecna vrednost elemenata matrice");
printf("\n\t6) Kraj programa");
printf("\n\tOdaberite opciju:");Kriterijum za ocenjivanje
Sigurne opcije: sistem, menija, unos matrice, ispis matrice, zbir, razlika
Operacije:vrstama/kolonama
Bodovi po zadacima
sistem menija: 5 bodova
Unos matrice: 20 bodova
Ispis matrice: 20 bodova
Zbir/ razlika matrice:20 bodova
Opcija 4: 20 bodova
Opcija 5: 20 bodova
Ocene:
ocena 2: 40 - 54
ocena 3: 55 - 69
ocena 4: 70 - 84
ocena 5: 85 - 105
Opcije 4 i 5:
Najveći/najmanji element matrice
Zbir/proizvod elemenata matrice
Najveći element glavne dijagonale matrice
Transponovanje matrice
Proizvod matrice sa skalarom
...