#include #include #define Nmax 1000 int interpolaciona_pretraga_rekurzivno(int a[], int l, int d, int x) { if(l > d) return -1; if(x < a[l] || x > a[d]) return -1; if(a[l] == a[d]) return l; int s = l + (int)((double)(x - a[l])/(a[d] - a[l])*(d-l)); if(x < a[s]) return interpolaciona_pretraga_rekurzivno(a,l,d-1,x); else if(x > a[s]) return interpolaciona_pretraga_rekurzivno(a,l+1,d,x); else return s; } void main() { int niz[Nmax]; int i=0, n, x; //printf("Unesite trazeni broj: "); scanf("%d", &x); //printf("Unesite elemente niza do EOF: "); while(scanf("%d", &niz[i]) != EOF) i++; n = i; i = interpolaciona_pretraga_rekurzivno(niz,0,n-1,x); printf("%d\n", i); exit(EXIT_SUCCESS); } /* ITERATIVNA VERZIJA int interpolaciona_pretraga(int a[], int n, int x) { int l,s,d; l = 0, d = n-1; while(l <= d) { if(x < a[l] || x > a[d]) return -1; if(a[l] == a[d]) return l; s = l + (int)((double)(x - a[l])/(a[d] - a[l])*(d-l)); if(x < a[s]) d = s-1; else if(x > a[s]) l = s+1; else return s; } return -1; } */