/* Programmed by Kurt Normark, April 2003 */ #include int look_up_from_to(int v, int a[], int from, int to); /* Search for v in the sorted array a which holds n elements. Return index of v, of -1 if v is not found */ int look_up(int v, int a[], int n){ return look_up_from_to(v, a, 0, n-1); } int look_up_from_to(int v, int a[], int from, int to){ int mid = (from+to)/2; int result; if (from > to) result = -1; else if (v == a[mid]) result = mid; else if (v < a[mid]) result = look_up_from_to(v, a, from, mid-1); else result = look_up_from_to(v, a, mid+1, to); return result; } int main(void) { int tab[] = {-33, -15, -7, 3, 7, 9, 10, 17, 24, 33}; int tab_size = sizeof(tab)/sizeof(int); int search_el, result_index, i; printf("The table: "); for(i=0; i < tab_size; i++) printf("%5i", tab[i]); printf("\n\n"); do{ printf("Search for which integer element (for exit: 0): "); scanf("%i", &search_el); if (search_el != 0){ result_index = look_up(search_el, tab, tab_size); printf("Search result: %i\n", result_index); } } while (search_el != 0); return 0; }