#include #define MAXLEN 100=20 struct longestRec{ int array[MAXLEN]; int start; int end; int length; }; typedef struct longestRec Longest; void find(int array[], int m, int inputlen, Longest *final); void compare(Longest *res1, Longest *res2); int max(int array[], int start, int end); int min(int array[], int start, int end); int main(int argc, char *argv[]) { FILE *src = NULL; //file int i = 0, m; //i: loop int num; //input buffer int numbers[MAXLEN]; //store numbers int inputlen = 0; //length of array numbers Longest final; //store result final.start = 0; final.end = 0; final.length = 0; if(argc != 3) { fprintf(stderr, "Arguments not match.\n"); } else { printf("%s, %s\n", argv[1], argv[2]); sscanf(argv[1], "%d", &m); printf("test m = %d\n", m); src = fopen(argv[2], "r"); printf("src = %p\n", src); if(src == NULL) { fprintf(stderr, "File not found.\n"); return 1; } } //while(1) //{ printf("!!!\n"); while(fscanf(src, "%d", &num) != EOF) { numbers[i] = num; printf("%d", numbers[i]); i++; } printf("\n"); inputlen = i; find(numbers, m, inputlen, &final); // printf("The longest sequence is: "); //print the result // for(i=0; istart, f= inal->end, final->length); } } else //start i, end j { printf("test in find: i = %d, j = %d\n", i, j); mx = max(array, i, j); mn = min(array, i, j); // printf("test mx = %d, mn = %d\n", mx, mn); // printf("######\n"); if(mx-mn <= m) //copy all the values into tmp { /*for(l=i, k=0; l<=j; l++, k++) //tmp.array[] { tmp.array[k] = array[l]; } */ tmp.start = i; tmp.end = j; tmp.length = j-i+1; printf("test start %d, end %d, length %d\n\n\n", tmp.start, tmp.end, t= mp.length); compare(final, &tmp); printf("test final start %d, end %d, length %d\n\n\n", final->start, f= inal->end, final->length); } } } } } void compare(Longest *res1, Longest *res2) { printf("@@@@test in cmp tmplength %d, finallength\n\n\n", res1->length, re= s2->length); if(res1->length >= res2->length) { res1->start = res2->start; res1->end = res2->end; res1->length = res2->length; printf("test in cmp final start %d, end %d, length %d\n\n\n", res1->start= , res1->end, res1->length); } else { return; } } int max(int array[], int start, int end) { int max = array[start]; int i = start; while(i <= end) { if(max <= array[i]) { max = array[i]; } i++; } // printf("test in max: mx = %d\t", max); return max; } int min(int array[], int start, int end) { int min = array[start]; int i = start; while(i <= end) { if(min >= array[i]) { min = array[i]; } i++; } // printf("test in min: mn = %d\n", min); return min; }