Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #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<n) {
- fscanf(in, "%f %f", &v, &i);
- dir[j].volt = v;
- dir[j].amp = i;
- j++;
- }
- }
- void printData(struct ivdata dir[], int n) {
- int j;
- for (j=0; j<n; j++)
- printf("%2.2f ; %2.2f\n", dir[j].volt, dir[j].amp);
- }
- int seqSearch(float x, struct ivdata dir[], int n) {
- int i;
- for (i=0; i<n; i++)
- if (x == dir[i].volt)
- return(i);
- return(-1);
- }
- int binSearch(float x, struct ivdata dir[], int start, int end) {
- if(start > 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;
- */
Advertisement
Add Comment
Please, Sign In to add comment