12.07.2015 Views

Programiranje 1 programski jezik c - Ncd.matf.bg.ac.rs

Programiranje 1 programski jezik c - Ncd.matf.bg.ac.rs

Programiranje 1 programski jezik c - Ncd.matf.bg.ac.rs

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Funkcija pretražuje niz celih brojevadužine n, tražeći u njemu element x.Pretraga se vrši prostom iter<strong>ac</strong>ijom krozniz.Ako se element pronađe funkcija vraćaindeks pozicije na kojoj je pronađen. Akoelement nije pronađen u nizu, funkcijavraća -1, kao indikator neuspešnepretrage.#include #define MAX 1002


* Funkcija main */int main(){int a[MAX];int n, i, x;/* Unosimo dimenziju niza */printf("Uneti dimenziju: ");scanf("%d", &n);/* Unosimo elemente */printf("Uneti elemente niza:\n");for(i = 0; i < n; i++)scanf("%d", &a[i]);4


* Unosimo broj koji se trazi */printf("Uneti element koji se trazi: ");scanf("%d", &x);/* Pretrazujemo niz */i = linearna_pretraga(a, n, x);}/* Ispis poruke */if(i == -1)printf("Element nije u nizu\n");elseprintf("Element je u nizu na poziciji %d\n",i);5


Program demonstrira sortiranje niz<strong>ac</strong>elih brojeva, metodom sortiranjaizborom najmanjeg elementa. U prvoj iter<strong>ac</strong>iji se traži najmanjielement u nizu i postavlja se na početnupoziciju (zamenom sa elementom koji sena toj poziciji nalazio ranije). U sledećojiter<strong>ac</strong>iji se traži najmanji element međupreostalim elementima, i postavlja se nasledeću poziciju, itd.6


void sortiraj (int a[], int n){int i, j;int min;int pom;/* U svakoj iter<strong>ac</strong>iji ove petlje se pronalazinajmanji element medju elementimaa[i], a[i+1],...,a[n-1], i postavlja se napoziciju i, dok se element na poziciji ipremesta na poziciju min, na kojoj senalazio najmanji od gore navedenihelemenata. */7


for (i = 0; i < n - 1; i++){/* Unutrasnja petlja pronalazi pozicijumin, na kojoj se nalazi najmanji odelemenata a[i],...,a[n-1]. */min = i;for (j = i + 1; j < n; j++)if (a[j] < a[min])min = j;8


* Zamena elemenata na pozicijama (i) imin.}Ovo se radi samo ako su (i) i minrazliciti,}in<strong>ac</strong>e je nepotrebno. */if (min != i){}pom = a[i];a[i] = a[min];a[min] = pom;9


* Test program */int main (){int a[MAX];int n;int i;/* Unosimo dimenziju niza */printf ("Uneti dimenziju niza: ");scanf ("%d", &n);10


* Unosimo elemente niza */printf ("Uneti elemente niza:\n");for (i = 0; i < n; i++)scanf ("%d", &a[i]);/* Sortiramo niz */sortiraj (a, n);/* Ispisujemo sortirani niz */printf ("Niz nakon sortiranja:\n");for (i = 0; i < n; i++)printf ("%d ", a[i]);putchar ('\n');}11


#include #define MAX 100/* Funkcija trazi u sortiranom nizu a[] duzinenbroj x. Vr<strong>ac</strong>a indeks pozicije nadjenogelementaili -1, ako element nije pronadjen */int binarna_pretraga (int a[], int n, int x){int l = 0;int d = n - 1;12


* Dokle god je indeks l levo od indeksa...d */while (l


* Ako je sredisnji element manji od x,tada se x mora nalaziti u desnojpolovini niza */else if (x > a[s])l = s + 1;else/* Ako je sredisnji element jednak x,tada smo pronasli x na poziciji s */return s;}/* ako nije pronadjen vr<strong>ac</strong>amo -1 */return -1;}14


* Test program */int main (){int a[MAX];int n;int i;int x;/* Unosimo dimenziju niza */printf ("Uneti dimenziju niza: ");scanf ("%d", &n);15


* Unosimo elemente niza */printf ("Uneti elemente niza:\n");for (i = 0; i < n; i++)scanf ("%d", &a[i]);/* Sortiramo niz */sortiraj (a, n);16


* Ispisujemo sortirani niz */printf ("Niz nakon sortiranja:\n");for (i = 0; i < n; i++)printf ("%d ", a[i]);putchar ('\n');/* Unosimo broj koji se trazi */printf("Uneti trazeni broj: ");scanf("%d", &x);/* Pozivamo funkciju binarna_pretraga()*/i = binarna_pretraga(a, n, x);17


* Prikazujemo rezultat */}if(i == -1)printf("Element nije pronadjen\n");elseprintf("Element pronadjen na poziciji%d\n", i);18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!