Nizovi
- ponavljanje osnovnih pojmova
Niz predstavlja kolekciju podataka istog tipa smeštenih u memoriji u uzastopnim memorijskim lokacijama.
Na drugi način možemo da kažemo: Niz je složeni tip podataka koji se sastoji od više podataka istog tipa.
Ili još jednostavnije: niz je skup promenljvih istog tipa.
Prilikom deklaracije niza, nakon imena niza slede uglaste zagrade i u njima naveden broj elemenata niza.
Primer:
int c[100];
Ovom deklaracijom je najavljen niz c koji može imati 100 elemenata tipa int. Ti elementi se zovu: c[0], c[1], c[2], ... c[99]. Ako se ne vrši nikakva inicijalizacija elemenata nizova prilikom deklaracije, tada su vrednosti tih elemenata slučajno zatečene vrednosti na tim memorijskim lokacijama koje su zauzeli elmenti niza.
Prilikom učitavanja i prikazivanja elemenata niza obično se koristi for petlja da bi upotrebili svaku promenljivu niza.
Primer:


Primer:
Napisati program koji učitava niz od n prirodnih brojeva i računa njegovu aritmetičku sredinu (n<=100)

Ukratko:
- Da biste uopšte koristili niz, na početku ga je potrebno deklarisati. Deklaracija podrazumeva da se prvo navede tip promenljivih koji se koristi u nizu, zatim se navodi ime niza, i u uglastim zagradama se upisuje maksimalni broj članova koje taj niz može da ima u našem programu:
tip_promenljive Ime_Niza[broj_clanova_niza];
- Inicijalizacija: Na početku se, prilikom deklaracije niza - u istom koraku mogu navesti početne vrednosti za članove niza. To se zove inicijalizacija. postoji više načina kako se to može izvesti:
Inicijalizacija niza
Inicijalizacija ili zadavanje početnih vrednosti elementima niza može se izvršiti na sledeći način.
int brojevi[3] = {1, 3, 5};
U prethodnoj liniji koda je svakom od elemenata niza prilikom deklaracije postavljena i početna vrednost, tj, elementi niza su brojevi[0]=1, brojevi[1]=3 i brojevi[2]=5.
Ako se desi da se ne navede početna vrednost za sve članove niza, već ako se navede manji broj početnih vrednosti nego što je članova niza, tada će se kao početna vrednost u ostale članove niza postaviti 0 ! Na primer:
int brojevi[3] = {1, 3};
U prethodnoj liniji je navedena inicijalizacija gde su prva dva elementa niza dobila početnu vrednost: brojevi[0] =1; brojevi[1]=3, a za preostali element niza nismo naveli početnu vrednost, pa to znači da će biti brojevi[2]=0.
Ako se na početku uopšte ne navedu početne vrednosti elemenata niza (nema inicijalizacije) - tada će sadržaj u pojedinim elementima niza biti nešto što se zateklo u memorijskoj lokaciji koja je dodeljena tom članu niza (čitaj: ĐUBRE).
Međutim, ako prilikom inicijalizacije navedete više početnih vrednosti nego što je elemenata niza, dobićete GREŠKU prilikom kompajliranja !
Ispravno je čak da se izvrši deklaracija i inicijalizacija na sledeći način:
int brojevi[]={1,2,3};
U ovom slučaju će kompajler da pretpostavi da je onoliko elemenata u nizu koliko ste naveli kao početnih vrednosti pa će tada kompajler da deklariše niz od 3 elementa i u njih da postavi navedene početne vrednosti.
- Pristupanje elementima niza se obavlja tako što se navede ime niza, i u uglastim zagradama INDEX člana niza kojem se pristupa. Na primer:
brojevi[0] = 4;
brojevi[1] = 2 * brojevi[0];
brojevi[2] = brojevi[0] * brojevi[1];
Prvi elemenat u nizu se označava indeksom 0, a ne 1 !
Indeks niza može da bude proizvoljan izraz CELOBROJNE vrednosti, npr:
brojevi[i*2] = 5;
Još samo jednu stvar treba da znate, ako napišemo samo brojevi dakle bez ikakvog indexa to će imati isti efekat kao da smo napisali brojevi[0] , dakle pristupamo prvoj promenljivoj niza
- Unos elemenata niza se najčešče može vršiti pomoću for petlje:
for(i=0; i<3; i++)
scanf("%d ",&brojevi[i];
- Štampanje elemenata niza (na primer na ekran) se takođe najčešće vrši pomoću for petlje:
for(i=0; i<3; i++)
printf("%d ",brojevi[i];
Zadatak:
Kreirati niz celih brojeva od najviše 50 elemenata. U taj niz treba uneti vrednosti za sve članove niza. Na ekranu ispisati elemente niza i zbir svih članova niza. Omogućiti da se ceo postupak ponavlja dokle god to korisnik želi.
