files.c |
| #include <stdio.h> #include <stdlib.h> #define ARRAY_SIZE 10000 int binsearch(int *a, int n, int x){ int m=n/2; if(n==0) return 0; if(a[m]==x) return 1; else if(a[m]<x) return binsearch(a+m+1,m,x); else return binsearch(a,n-(n-m),x); } void insertion_sort(int *a, int n){ int guide=0; int i; int value; int j; for (i=0; i<n; i++){ value = a[i]; if(a[i]<guide){ for(j=i-1; j >=0 && a[j] > value; j--){ a[j+1]=a[j]; } a[j+1]=value; } if (value>guide) guide=value; // printf("Value: %d\n",value); // printf("Guide: %d\n",guide); } } int main(int argc, char **argv){ FILE *infile; int my_array[ARRAY_SIZE]; int num_items = 0; int i; int x; if((infile = fopen(argv[1], "r")) == NULL){ fprintf(stderr, "%s: can't open file %s\n", argv[0], argv[1]); return EXIT_FAILURE; } while(num_items < ARRAY_SIZE && fscanf(infile, "%d", &my_array[num_items])!=EOF){ num_items++; } insertion_sort(my_array,num_items); /* for(i=0; i<num_items; i++){ */ /* printf("%d\n", my_array[i]); */ /* } */ while(1==scanf("%d", &x)){ printf("%c\n", binsearch(my_array,num_items,x)? '+' : '-'); } return EXIT_SUCCESS; } |
James Little |