Jednodimenzionalni niz
1. Jednodimenzionalni niz
1.6. Pretraživanje niza
Kad smo obrađivali for petlju napisali smo program u kojem smo trebali ispisati aritmetičku sredinu n učitanih brojeva. Program je izgledao ovako:
#include<stdio.h>int main()
{
int n,x,i,s=0;
float as;
printf("Unesi koliko brojeva ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\nUnesi %d broj ",i);
scanf("%d",&x);
s=s+x;
}
as=(float)s/n;
printf("prosjek %.2f\n",as);
return 0;
}
Ukoliko bismo u ovom programu željeli vidjeti koliko je učitanih brojeva manjih (ili većih) od prosjeka to ne bismo mogli napraviti jer je program u varijabli x zapamtio samo posljednju učitanu vrijednost. Ostale nisu sačuvane. Ono što možemo je za pohranu ocjena upotrijebiti polje i tada će sve učitane vrijednosti biti spremljene pa se mogu usporediti sa prosjekom.
To nazivamo pretraživanje niza - traženje elemenata koji zadovoljavju određeni uvjet.
Napomena: Algoritmi pretraživanja, zajedno s algoritmima sortiranja, su algoritmi
koji se najčešće koriste u programiranju. Razlikuju se prema složenosti, brzini
i uporabi memorije. Zasad ćemo proučiti najjednostavniji način pretraživanja,
ne uzimajući u obzir brzinu i složenost. To je u ovom primjeru opravdano zbog
male količine podataka koje treba pretražiti.
I za pretraživanje niza koriste se programske petlje, ali sada zajedno s naredbom grananja jer je potrebno provjeriti zadovoljava li element niza zadani uvjet.
for (kv=0;kv<n;kv++)
if (uvjet) naredba;
Cijeli program bi onda izgledao ovako:#include<stdio.h>
int main()
{
int n,x[50],i,s=0, koliko=0;
float as;
printf("Unesi koliko brojeva ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Unesi %d broj ",i);
scanf("%d",&x[i]);
s=s+x[i];
}
as=(float)s/n;
for(i=1;i<=n;i++)
if (x[i]<as)
koliko++;
printf("prosjek %.2f, manje od prosjeka je %d",as,koliko);
return 0;
}