Jednodimenzionalni niz
1. Jednodimenzionalni niz
1.3. Dohvaćanje elemenata niza
Za dohvaćanje vrijednosti bilo kojeg elementa niza potrebno je znati njegovo mjesto u nizu, odnosno njegov indeks. S obzirom na to da indeksi u C-u počinju od nule, treba imati na umu da je element na i-tomu mjestu u nizu, zapravo, element indeksa i-1. Ako treba dohvatiti treći član niza b, to je element b[2]. Vrijednost elementa b[2] u prethodnom je primjeru 30. Možemo je ispisati na zaslon funkcijom za ispisivanje.
Naredbom
printf("\n%d",b[3]);
na zaslonu će se ispisati broj 40 jer to je vrijednost koja se nalazi na četvrtome mjestu u nizu b (i ima indeks 3).
Primjer
Najavljen je i inicijaliziran niz a:int a[]={13, 21, 16, 2, 5};
a[2]=a[0]+a[1];
a[2]++;
Koje će vrijednosti imati element a[2] nakon izvršavanja:
a) samo prve linije kôda (deklaracije)
b) prvih dviju linija koda
c) svih triju navedenih instrukcija?
Rješenje
a) 16
b) 34 (13 + 21)
c) 35 (34 + 1)
Iz prethodnog je primjera vidljivo da se svaki element niza može dohvaćati i mijenjati neovisno o ostalim elementima.
Zadatak
U sljedećem su programu učinjene tri greške. Pronađite ih i ispravite bez upisivanja programa u računalo.
#include <stdio.h>int main ()
{
int a;
int a[], b[3]={1, 2, 3, 4};
a[0]=b[1];
a[1]=b[0];
printf("%d, %d", a[0], a[1]);
return 0;
}
Rješenje
varijabla a najavljena je na dvama mjestima
veličina niza a nije određena
previše vrijednosti u postupku inicijalizacije niza b (duljina niza je 3, a navedene su četiri početne vrijednosti)
Ispravan program izgleda ovako:
#include <stdio.h>int main ()
{
int a[2], b[3]={1, 2, 3};
a[0]=b[1];
a[1]=b[0];
printf("%d, %d", a[0], a[1]);
return 0;
}
i na zaslon ispisuje vrijednosti niza a, odnosno brojeve 2 i 1.