Dvodimenzionalni niz matrica Dvodimenzionalni niz matrica Svaki element

  • Slides: 22
Download presentation
Dvodimenzionalni niz matrica

Dvodimenzionalni niz matrica

Dvodimenzionalni niz (matrica) � Svaki element u dvodimenzionalnom nizu je određen svojim mjestom (redom

Dvodimenzionalni niz (matrica) � Svaki element u dvodimenzionalnom nizu je određen svojim mjestom (redom i stupcem u kojem se nalazi). � Dvodimenzionalni niz se još naziva matricom. � Matrica reda mxn ima m redaka i n stupaca.

Dvodimenzionalni niz � Dvodimenzionalni niz je ograničeni skup podataka istog tipa. � Svaki element

Dvodimenzionalni niz � Dvodimenzionalni niz je ograničeni skup podataka istog tipa. � Svaki element se dohvaća pomoću dva indeksa. � Indeksi retka i indeksi stupca počinju s 0. � Elementi nultog retka niza a su: �a 00, a 01, a 02, a 03, a 04, …. a 0 n � Elementi nultog stupca su: �a 00, a 10, a 20, a 30, a 40, …. am 0

Dvodimenzionalni niz 1. stupac 2. stupac 3. stupac 1. red A[0, 0] A[0, 1]

Dvodimenzionalni niz 1. stupac 2. stupac 3. stupac 1. red A[0, 0] A[0, 1] A[0, 2] 2. red A[1, 0] 347 3. red A[2, 0] IME NIZA A[1, 2]=347 INDEKS RETKA INDEKS STUPCA VRIJEDNOST

Dvodimenzionalni niz � Ako matrica ima isti broj redaka i stupaca, onda kažemo da

Dvodimenzionalni niz � Ako matrica ima isti broj redaka i stupaca, onda kažemo da je kvadratna reda n. � Kvadratna matrica ima glavnu i sporednu dijagonalu. � Glavna dijagonala ? ? ? � Sporedna dijagonala ? ? Sporedna dijagonala a 00 a 10 a 20 a 30 a 01 a 11 a 21 a 31 a 02 a 12 a 22 a 32 a 03 a 13 a 23 a 33 Glavna dijagonala

Najava dvodimenzionalnog niza � Niz se mora najaviti u programu kao i svaka druga

Najava dvodimenzionalnog niza � Niz se mora najaviti u programu kao i svaka druga varijabla tip_elemenata_niza ime[broj_redova][broj_stupaca]; � Tip_elemenata_niza - (int, float, double, char) � Ime – identifikator � Broj_redova, broj_stupaca – m, n

Najava niza � int a[3][2]={{1, 2}, {3, 4}, {5, 6}}; � U radnoj memoriji

Najava niza � int a[3][2]={{1, 2}, {3, 4}, {5, 6}}; � U radnoj memoriji je rezerviran memorijski prostor za 6 cijelih brojeva: Vrijednosti elemenata niza indeksi mjesto 0, 0 0, 1 1, 0 1, 1 1, 2 2, 0 1 2 3 4 5 6

Najava niza � Ako se niz deklarira kao globalna varijabla (prije main()), onda je

Najava niza � Ako se niz deklarira kao globalna varijabla (prije main()), onda je početna vrijednost svih elemenata 0, inače su vrijednosti postavljene slučajno. � Niz se može inicijalizirati prilikom deklaracije ili u programu.

Inicijalizacija prilikom deklaracije int b[2][2]={{1, 2}, {-3, 4}}; 1 2 -3 4 • NAPOMENA:

Inicijalizacija prilikom deklaracije int b[2][2]={{1, 2}, {-3, 4}}; 1 2 -3 4 • NAPOMENA: broj elemenata unutar vitičaste zagrade može biti manji ili jednak duljini niza. • Ako je broj elemenata u vitičastoj zagradi manji od duljine niza, onda su preostali elementi 0.

Upis elemenata dvodimenzionalnog niza � Elementi se unose pomoću dvije ugniježđene petlje (najčešće for)

Upis elemenata dvodimenzionalnog niza � Elementi se unose pomoću dvije ugniježđene petlje (najčešće for) � Vanjska(za redak) � Unutrašnja(za stupac) for(i=0; i<m; i++) for(j=0; j<n; j++) scanf(“%d”, &a[i][j]);

Ispis elemenata dvodimenzionalnog niza � Elemente niza također ispisujemo pomoću dvije petlje: for(i=0; i<m;

Ispis elemenata dvodimenzionalnog niza � Elemente niza također ispisujemo pomoću dvije petlje: for(i=0; i<m; i++) {printf(„n”); for(j=0; j<n; j++) printf(“%d”, a[i][j]); }

Rad s dvodimenzionalnim nizom

Rad s dvodimenzionalnim nizom

Zadaci. �

Zadaci. �

Matrica u funkciji

Matrica u funkciji

Sortirajte matricu. 1. 2. 3. 4. 5. Upiši matricu. Prepiši matricu u niz. Sortiraj

Sortirajte matricu. 1. 2. 3. 4. 5. Upiši matricu. Prepiši matricu u niz. Sortiraj niz. Vrati elemente niza u matricu. Ispiši matricu.

Početak programa i globalne varijable #include<stdio. h> #include<conio. h> int x[10], y[100], n ,

Početak programa i globalne varijable #include<stdio. h> #include<conio. h> int x[10], y[100], n , m;

Glavni program main() { printf("Upisite broj redaka matrice: "); scanf("%d", &m); printf("Upisite broj stupaca

Glavni program main() { printf("Upisite broj redaka matrice: "); scanf("%d", &m); printf("Upisite broj stupaca matrice: "); scanf("%d", &n); upis(x, m, n); printf("Ispis matrice: n"); ispis(x, m, n); matrica_u_niz(x, m, n); sort(y, m*n); niz_u_matricu(x, m, n, y); printf("n. Ispis sortirane matrice: n"); ispis(x, m, n); getch(); }

Funkcije upisa i ispisa void upis(int a[10], int m, int n) {int i, j;

Funkcije upisa i ispisa void upis(int a[10], int m, int n) {int i, j; for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("x[%d]=", i, j); scanf("%d", &a[i][j]); } } void ispis(int a[10], int m, int n) {int i, j; for(i=0; i<m; i++) {printf("n"); for(j=0; j<n; j++) printf("%d ", a[i][j]); } }

Funkcija prijepisa matrice u niz void matrica_u_niz(int a[10], int m, int n) {int i,

Funkcija prijepisa matrice u niz void matrica_u_niz(int a[10], int m, int n) {int i, j, k=0; for(i=0; i<m; i++) for(j=0; j<n; j++) { y[k]=a[i][j]; k++; } }

Funkcija sortiranja niza void sort(int a[100], int n) {int p, i, j; for(i=0; i<n-1;

Funkcija sortiranja niza void sort(int a[100], int n) {int p, i, j; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) { p=a[i]; a[i]=a[j]; a[j]=p; } }

Funkcija prijepisa niza u matricu void niz_u_matricu(int a[10], int m, int n, int y[100])

Funkcija prijepisa niza u matricu void niz_u_matricu(int a[10], int m, int n, int y[100]) { int i, j, k=0; for(i=0; i<m; i++) for(j=0; j<n; j++) {a[i][j]=y[k]; k++; } }

Zadaci. 1. 2. Napiši funkciju koja će izračunati umnožak svih elemenata ispod glavne dijagonale

Zadaci. 1. 2. Napiši funkciju koja će izračunati umnožak svih elemenata ispod glavne dijagonale matrice reda n. Napiši funkciju koja će ispitati je li matrica donje trokutasta. Matrica je donje trokutasta ako su joj svi elementi iznad glavne dijagonale jednaki nula.