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.