#include #include FILE *fp; int main(int argc, char *argv[]) { /* Generator program to create (some) test data. NB. It is not the case that all test data comes from this program, i.e. you must not write a solution that is only optimal only for this source. */ long number, nn, seed; long i = 0, mean = 0, varn = 10; long j, k, l, r, mn, mx, m, a[100]; if (argc < 3) { printf("usage: gen n seed [m]\n"); exit(0); } number = atol(argv[1]); seed = atol(argv[2]); if( seed <= 0 ) seed = 1231; srandom(seed); /* set seed for prng */ if ((fp = fopen("rand","w")) == NULL) { printf("File not opened rand.\n"); exit(0); } for(i=0; i < number; i++) { mean = mean + (random() % 21 - 10); /* mean wanders randomly */ if( random()%1000 == 17 ) /* i.e. 1 in 1000 */ { if( random() % 10 > 7 ) /* i.e. 2 in 10 */ mean = -mean; mean = mean + (random() % 10001 - 5000); /* big jump */ } varn = varn + (random() % 21 - 10); /* local variation */ if( varn < 1 ) varn = 100; else if( varn > 10000 ) varn = 5000; nn = mean + (random() % varn); fprintf( fp, "%d ", nn ); if ((i % 10) == 9) fprintf(fp,"\n"); if(i < 100) a[i] = nn; } fclose(fp); printf("--- %i random numbers written to rand ---\n", number); i=-1; j=number; k=-100; l=0; r=0; if(1 <= number && number <= 100){ m = atol(argv[3]); while(1) /* There are zero marks for handing in code like this */{ if(i>=number) break; if(j>=number){ i++; j=i; k=i; mn=a[i]; mx=a[i]; continue;} if(k>j){ if(j-i>r-l) l=i; if(l-r>i-j) r=j; j++; k=i; mn=a[i]; mx=a[i]; continue;} /* There are zero marks for handing in code like this */ if( a[k] < mn ) mn = a[k]; if( mx < a[k] ) mx = a[k]; if(mx-mn>m){ j=number; continue;} k++;} printf("solution: %i %i %i\n",l,r,r-l+1);} printf("--- done ---\n"); exit(0); /* CSE23O4 prac2 data generator CSSE, Monash Uni., .au, 3/2OO4 */ }