Sloeni tipovi podataka 2 3 Sloeni tipovi podataka
- Slides: 9
Složeni tipovi podataka
2. 3. Složeni tipovi podataka C raspolaže sljedećim složenim tipovima podataka: Nizovi (indeksirane promjenljive) jednodimenzionalno = NIZ, dvodimenzionalno = MATRICA, višedimenzionalno strukture unije
2. 3. 1. Nizovi Niz ili vektor je jednodimenzionalno polje To je skup podataka istog tipa U memoriji se smješta u niz uzastopnih mem. lokacija Svi podaci u nizu imaju jedno ime = IME NIZA Ime niza predstavlja početnu adresu niza u memoriji Svaki element u nizu određen je: imenom niza, i indeksom (pomjerajem u odnosu na početak niza) niz[7] niz[6] niz[5] niz[4] niz[3] niz[2] niz[1] niz[0] MEMORIJA
2. 3. 1. Nizovi Deklaracija niza Opšti oblik deklaracije: tip ime_niza [broj_elemenata] = {lista vrijednosti} tip niza (tip podataka u nizu) ime niza (identifikator u skladu sa sintaksom jezika, važe sva pravila kao i za skalarne promjenljive) vrijednosti elemenata u nizu (inicijalizacija niza) (nije obavezno inicijalizovanje) (vrijednosti se razdvajaju zapetama) broj elemenata u nizu (cjelobrojna konstanta) (rezerviše se potreban broj bajtova za memorisanje deklarisanog broja elemenata)
2. 3. 1. Nizovi Deklaracija niza Primjer deklaracije: int niz[5]; char tekst[10]; tekst[9] tekst 10*1 B = 10 B Primjer: #define MAX 5 #define LENG 10 main() { int niz[MAX]; char tekst[LENG]; . . . } tekst[1] tekst[0] niz[4] niz[3] niz[2] 5*2 B = 10 B niz[1] niz[0] MEMORIJA
2. 3. 1. Nizovi Deklaracija niza Primjer deklaracije sa inicijalizacijom: A[0] int A[3]={1, 2, 3}; int B[]={1, 2, 3, 4}; int C[5]={10}; int D[5]={0}; 1 A[1] 2 A[2] 3 B[0] B[1] B[2] 1 2 3 C[0] C[1] C[2] 10 0 0 D[0] D[1] D[2] 0 0 0 B[3] 4 C[3] C[4] 0 0 D[3] D[4] 0 0
2. 3. 1. Nizovi Primjer: Učitati niz od n cijelih brojeva, pa ih ispisati redoslijedom kojim su učitani. #include <stdio. h> #define MAX 100 main() { int niz[MAX]; int i, n; do { printf(”n=”); scanf(”%d”, &n); } while (n<1); for ( i=1 ; i<=n ; i++ ) { printf(”Unesite %d. broj: ”); scanf(”%d”, &niz[i-1]); } printf(”Unijeli ste: ”); for ( i=0 ; i<n ; i++ ) printf(” %d”, niz[i]); } POČETAK n ISTINA n<1 LAŽ i = 1, n niz[i-1] i = 0, n-1 niz[i] KRAJ
2. 3. 1. Nizovi Primjer: Učitati niz od n cijelih brojeva, pa ih ispisati obrnutim redoslijedom. #include <stdio. h> #define MAX 100 main() { int niz[MAX]; int i, n; do { printf(”n=”); scanf(”%d”, &n); } while (n<1); for ( i=1 ; i<=n ; i++ ) { printf(”Unesite %d. broj: ”); scanf(”%d”, &niz[i-1]); } printf(”Unijeli ste: ”); for ( i=n ; i>=1 ; i++ ) printf(” %d”, niz[i-1]); } POČETAK n ISTINA n<1 LAŽ i = 1, n niz[i-1] i = n, 1 niz[i-1] KRAJ
2. 3. 1. Nizovi Primjer: Učitati niz od n cijelih brojeva, pa ispisati njihovu aritmetičku sredinu i one učitane brojeve koji su veći od sredine. POČETAK T n ISTINA as = s/n n<1 i = 0, n-1 LAŽ s=0 i = 0, n-1 ISTINA niz[i]>as niz[i] s = s + niz[i] T KRAJ LAŽ #include <stdio. h> #define MAX 100 main() { int niz[MAX]; int i, n, s=0; float as; do { printf(”n=”); scanf(”%d”, &n); } while (n<1); for (i=0; i<=n-1; i++) { printf(”Unesite broj: ”); scanf(”%d”, &niz[i]); s+=niz[i]; } as=(float)s / n; printf(”Sredina: %7. 3 fn”, as); printf(”Veci su: ”); for ( i=0 ; i<n ; i++ ) if (niz[i]>as) printf(” %d”, niz[i]); }