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;
}