Polia a matice v jazyku C Michal Kvasnica
Reťazec ako pole znakov reťazcový dátový typ rezervovaná pamäť char retazec[pocet_znakov]; názov premennej
Reťazec ako pole znakov char retazec[pocet_znakov]; char r[5];
Reťazec ako pole znakov char retazec[pocet_znakov]; char r[5];
Reťazec ako pole znakov char retazec[pocet_znakov]; char r[5]; nevyužité miesto A b c \0 znak konca reťazca
Inicializácia poľa znakov je potrebné uvažovať \0! char retazec[4] = Abc ; bez znaku \0 char retazec[4] = { A, b, c, \0 ; char retazec[] = Abc ; vrátane ukončovacieho znaku automatická alokácie pamäte
Prístup k prvkom poľa char retazec[4] = { A, b, \0, c ; for(i=0; i<4; i++) { printf( retazec[%d]: %d\n, i, retazec[i]); retazec[0]: 65 retazec[1]: 98 retazec[2]: 0 retazec[3]: 99
Prístup k prvkom poľa char retazec[4] = { A, b, \0, c ; for(i=0; i<10; i++) { printf( retazec[%d]: %d\n, i, retazec[i]); retazec[0]: 65 retazec[1]: 98 retazec[2]: 0 retazec[3]: 99 retazec[4]: -112 retazec[5]: -94 retazec[6]: -120 retazec[7]: -65 retazec[8]: 0 retazec[9]: 32
Pole čísel dátový typ rezervovaná pamäť int pole[pocet_prvkov]; názov premennej
Inicializácia poľa int pole[4] = {1, 8, 5, 2; int pole[] = {1, 8, 5, 2; automatická alokácie pamäte
Prístup k prvkom poľa int pole[] = {1, 8, 5, 2; int i; for (i=0; i<4; i++) { printf("pozicia: %d, hodnota: %d\n", i, pole[i]); pozicia: 0, hodnota: 1 pozicia: 1, hodnota: 8 pozicia: 2, hodnota: 5 pozicia: 3, hodnota: 2
Zistenie dĺžky poľa int pole[] = {1, 8, 5, 2; int dlzka = sizeof(pole)/sizeof(int); float pole[] = {1, 8, 5, 2; int dlzka = sizeof(pole)/sizeof(float);
Polia - príklad č. 1 Algoritmus: - načítaj z klávesnice celé číslo x - vytvor pole obsahujúce čísla od 1 po x
Polia - príklad č. 1 Algoritmus: - načítaj z klávesnice celé číslo x - vytvor pole obsahujúce čísla od 1 po x int main() { int x; printf("vloz cislo: "); scanf("%d", &x); int pole[x]; int i; for (i=0; i<x; i++) { pole[i] = i+1; for (i=0; i<x; i++) { printf("prvok c. %d = %d\n", i, pole[i]);
Polia - príklad č. 1 Algoritmus: - načítaj z klávesnice celé číslo x - vytvor pole obsahujúce čísla od 1 po x int main() { int x; printf("vloz cislo: "); scanf("%d", &x); int pole[x]; int i; for (i=0; i<x; i++) { pole[i] = i+1; for (i=0; i<x; i++) { printf("prvok c. %d = %d\n", i, pole[i]);
Polia - príklad č. 1 Algoritmus: - načítaj z klávesnice celé číslo x - vytvor pole obsahujúce čísla od 1 po x int main() { int x; printf("vloz cislo: "); scanf("%d", &x); int pole[x]; int i; for (i=0; i<x; i++) { pole[i] = i+1; for (i=0; i<x; i++) { printf("prvok c. %d = %d\n", i, pole[i]);
Polia - príklad č. 1 Algoritmus: - načítaj z klávesnice celé číslo x - vytvor pole obsahujúce čísla od 1 po x int main() { int x; printf("vloz cislo: "); scanf("%d", &x); int pole[x]; int i; for (i=0; i<x; i++) { pole[i] = i+1; for (i=0; i<x; i++) { printf("prvok c. %d = %d\n", i, pole[i]);
Polia - príklad č. 2 Algoritmus: - inicializuj pole prvkov {10, 4, 8, 5 - vytvor nové pole obsahujúce prvky v opačnom poradí
Polia - príklad č. 2 Algoritmus: - inicializuj pole prvkov {10, 4, 8, 5 - vytvor nové pole obsahujúce prvky v opačnom poradí int main() { int povodne[] = {10, 4, 8, 5; int otocene[4]; int i; for (i=0; i<4; i++) { otocene[i] = povodne[3-i]; for (i=0; i<4; i++) { printf("povodne: %d, otocene: %d\n", povodne[i], otocene[i]);
Polia - príklad č. 2 Algoritmus: - inicializuj pole prvkov {10, 4, 8, 5 - vytvor nové pole obsahujúce prvky v opačnom poradí int main() { int povodne[] = {10, 4, 8, 5; int otocene[4]; int i; for (i=0; i<4; i++) { otocene[i] = povodne[3-i]; for (i=0; i<4; i++) { printf("povodne: %d, otocene: %d\n", povodne[i], otocene[i]);
Polia - príklad č. 2 Algoritmus: - inicializuj pole prvkov {10, 4, 8, 5 - vytvor nové pole obsahujúce prvky v opačnom poradí int main() { int povodne[] = {10, 4, 8, 5; int otocene[4]; int i; for (i=0; i<4; i++) { otocene[i] = povodne[3-i]; for (i=0; i<4; i++) { printf("povodne: %d, otocene: %d\n", povodne[i], otocene[i]);
Polia - príklad č. 2 Algoritmus: - inicializuj pole prvkov {10, 4, 8, 5 - vytvor nové pole obsahujúce prvky v opačnom poradí int main() { int povodne[] = {10, 4, 8, 5; int otocene[4]; int i; for (i=0; i<4; i++) { otocene[i] = povodne[3-i]; for (i=0; i<4; i++) { printf("povodne: %d, otocene: %d\n", povodne[i], otocene[i]);
Polia - príklad č. 3 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš načítané pole
Polia - príklad č. 3 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš načítané pole int main() { int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); for (i=0; i<pocet; i++) { printf("pole[%d] = %d\n", i, pole[i]);
Polia - príklad č. 3 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš načítané pole int main() { int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); for (i=0; i<pocet; i++) { printf("pole[%d] = %d\n", i, pole[i]);
Polia - príklad č. 3 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš načítané pole int main() { int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); for (i=0; i<pocet; i++) { printf("pole[%d] = %d\n", i, pole[i]);
Polia - príklad č. 3 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš načítané pole int main() { int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); for (i=0; i<pocet; i++) { printf("pole[%d] = %d\n", i, pole[i]);
Polia - príklad č. 4 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš najväčší prvok
Polia - príklad č. 4 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš najväčší prvok int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); int maximum = pole[0]; for (i=1; i<pocet; i++) { if (pole[i] > maximum) { maximum = pole[i]; printf("najvacsi prvok: %d\n", maximum);
Polia - príklad č. 4 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš najväčší prvok int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); int maximum = pole[0]; for (i=1; i<pocet; i++) { if (pole[i] > maximum) { maximum = pole[i]; printf("najvacsi prvok: %d\n", maximum);
Polia - príklad č. 4 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš najväčší prvok int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); int maximum = pole[0]; for (i=1; i<pocet; i++) { if (pole[i] > maximum) { maximum = pole[i]; printf("najvacsi prvok: %d\n", maximum);
Polia - príklad č. 4 Algoritmus: - z klávesnice načítaj počet prvkov a jednotlivé prvky poľa - na obrazovku vypíš najväčší prvok int pocet; printf("pocet prvkov: "); scanf("%d", &pocet); int pole[pocet]; int i; for (i=0; i<pocet; i++) { printf("vloz prvok c. %d: ", i+1); scanf("%d", &pole[i]); int maximum = pole[0]; for (i=1; i<pocet; i++) { if (pole[i] > maximum) { maximum = pole[i]; printf("najvacsi prvok: %d\n", maximum);
Polia - neriešené príklady Pre automaticky inicializované pole čísel {1, -2, -3, 7, 4 zistite: - pozíciu najmenšieho prvku v poli - aritmetický priemer prvkov - počet kladných a záporných prvkov
Matica čísel int matica[pocet_riadkov][pocet_stlpcov]; float matica[pocet_riadkov][pocet_stlpcov];
Matica čísel int a[3][4]; Stĺpec 0 Stĺpec 1 Stĺpec 2 Stĺpec 3 Riadok 0 a[0][0] a[0][1] a[0][2] a[0][3] Riadok 1 a[1][0] a[1][1] a[1][2] a[1][3] Riadok 2 a[2][0] a[2][1] a[2][2] a[2][3]
Inicializácia matice int a[3][4] = { {0, 1, 2, 3, {4, 5, 6, 7, {8, 9, 10, 11 ; Stĺpec 0 Stĺpec 1 Stĺpec 2 Stĺpec 3 Riadok 0 0 1 2 3 Riadok 1 4 5 6 7 Riadok 2 8 9 10 11
Prístup k prvkom matice int a[3][4] = { {0, 1, 2, 3, {4, 5, 6, 7, {8, 9, 10, 11 ; prvok = a[2][1] prvok = a[0][2] prvok = a[3][0] prvok = a[1][4] prvok = a[3][4]
Matice - príklady - inicializuj maticu 2x2 s prvkami [1, 2; 3, 4] - zisti súčet prvkov matice - vytvor novú maticu ako transpozíciu pôvodnej - vypočítaj determinant matice - vypočítaj násobok matice a vektora [5; 6]
Inicializácia matice riadkový aj stĺpcový rozmer int a[3][4] = { {0, 1, 2, 3, {4, 5, 6, 7, {8, 9, 10, 11 ; riadkový rozmer môžeme vynechať int a[][4] = { {0, 1, 2, 3, {4, 5, 6, 7, {8, 9, 10, 11 ;
Zistenie rozmeru matice bytový rozmer celej matice bytový rozmer prvého riadka riadky = sizeof(m)/sizeof(m[0]); stlpce = sizeof(m[0])/sizeof(int); bytový rozmer každého prvku