files.c
contents ::
  binsearch.c
  files.c
  programargs.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