#include #include #define NDATA 10 struct ivdata { float volt; float amp; }; int seqSearch(float, struct ivdata [], int); int binSearch(float, struct ivdata [], int, int); void readData(struct ivdata [], int); void printData(struct ivdata [], int); FILE * in; int main(void) { int res1, res2; float input; struct ivdata data[NDATA]; in = fopen("t8data", "r"); if (in == NULL) { fprintf(stderr, "Error opening file\n"); exit(1); } readData(data, NDATA); printData(data, NDATA); printf("Enter the voltage value to search>> "); scanf("%f", &input); res1 = seqSearch(input, data, NDATA); res2 = binSearch(input, data, 0, NDATA-1); if (res1 != -1) printf("Sequential search: V=%2.2f, I=%2.2f\n", data[res1].volt, data[res1].amp); else printf("Not found!\n"); if (res2 != -1) printf("Binary search: V=%2.2f, I=%2.2f\n", data[res2].volt, data[res2].amp); else printf("Not found!\n"); fclose(in); return 0; } void readData(struct ivdata dir[], int n) { int j=0; float i,v; while (j end)return(-1); int mid = (start+end)/2; if(dir[mid].volt==x)return mid; if(dir[mid].volt > x)return binSearch(x,dir,start,mid-1); if(dir[mid].volt < x)return binSearch(x,dir,mid+1,end); } /*Iteration int mid; while(start <= end); { mid=(start+end)/2; if(dir[mid].volt==x)return mid; if(dir[mid].volt > x)= mid-1); if(dir[mid].volt < x)= mid+1); } return -1; */