#include FILE * in; char input[256]; long number; long ch; void clean(long* resarray); int get(); void stlist(long* resarray); void loopst(long* resarray); void opst(long* resarray); int main() { long array[20]; int iter, max; int bool, i; in = fopen("complex.in","r"); fscanf(in, "%d", &max); for(iter = 1; iter <= max; iter++) { clean(array); get(); stlist(array); printf("Program #%d\nRuntime = ", iter); bool = 0; for(i = 19; i > 0; i--) if(array[i] != 0) { if(array[i] > 1) if(bool) printf("+%ld*n^%d", array[i], i); else printf("%ld*n^%d", array[i], i); else if(bool) printf("+n^%d", i); else printf("n^%d", i); bool = 1; } if(bool) if(array[0] != 0) printf("+%ld\n\n", array[0]); else printf("\n\n"); else if(array[0] != 0) printf("%ld\n\n", array[0]); else printf("0\n\n"); } fclose(in); return 0; } void stlist(long* resarray) { long array[20]; long num; int i; get(); switch(ch) { case 3: clean(array); loopst(array); for(i = 0; i < 20; i++) resarray[i] += array[i]; clean(array); stlist(array); for(i = 0; i < 20; i++) resarray[i] += array[i]; return; case 4: clean(array); opst(array); for(i = 0; i < 20; i++) resarray[i] += array[i]; clean(array); stlist(array); for(i = 0; i < 20; i++) resarray[i] += array[i]; return; case 2: return; } } void loopst(long* resarray) { long array[20]; long num; int i; get(); switch(ch) { case 5: clean(array); stlist(array); for(i = 18; i >= 0; i--) array[i+1] = array[i]; array[0] = 0; for(i = 0; i < 20; i++) resarray[i] += array[i]; return; case 6: num = number; clean(array); stlist(array); for(i = 0; i < 20; i++) array[i] *= num; for(i = 0; i < 20; i++) resarray[i] += array[i]; return; } } void opst(long* resarray) { long array[20]; long num; int i; get(); switch(ch) { case 6: resarray[0] = number; return; } } int get() { fscanf(in, "%s", input); switch(input[0]) { case 'B': ch = 1; return 1; case 'E': ch = 2; return 2; case 'L': ch = 3; return 3; case 'O': ch = 4; return 4; case 'n': ch = 5; return 5; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': sscanf(input, "%ld", &number); ch = 6; return 6; } } void clean(long* resarray) { int i; for(i = 0; i < 20; i++) resarray[i] = 0; }