#include #include #include FILE *in; char buffer[10000]=""; char *act = buffer; int n[20]; int first=12; /* char *readword() { char *this; char *ret; printf("da\n"); if(first==12) { act = fgets(buffer, 10000, in); this = strtok(act, " \n"); first = 0; } else { this = strtok(NULL, " \n"); if(this==NULL) { act = fgets(buffer, 10000, in); this = strtok(act, " \n"); } } if(this == NULL) this= readword(); printf("here\n"); strcpy(ret, this); printf("here\n"); printf("%s\n", ret); return ret; } */ void show() { int i; int first; first = 0; printf("Runtime = "); for(i=10;i>=0;i--) { if(n[i]>0) { if((first>0)) printf("+"); first++; if((n[i]>1) || ((i==0) && (n[i]==1)) ) printf("%d", n[i]); if(n[i]>1 && i>0) printf("*"); if(i>0) printf("n"); if(i>1) printf("^%d", i); } } if(first==0) printf("0"); printf("\n\n"); } char *readword(void) { char *ret = (char *)malloc(32); char x; int i = 0; x = fgetc(in); while((x!=EOF) && ((x==' ') || (x=='\n'))) x = fgetc(in); i = 0; while((x!=EOF) && (x!=' ') && (x!='\n')) { ret[i++] = x; x = fgetc(in); } ret[i] = '\0'; return ret; } void shift() { int i; for(i=12;i>0;i--) n[i] = n[i-1]; n[0] = 0; } void mulu(int m) { int i; for(i=12;i>=0;i--) n[i] = n[i] * m; } void statementlist() { char *w; int local = 0; while(1) { w = readword(); if(strcmp(w, "LOOP") == 0) { char *anz; int old[20]; int i; for(i=0;i<12;i++) {old[i] = n[i]; n[i] = 0;} anz = readword(); statementlist(); if(strcmp(anz, "n")==0) shift(); else mulu(atoi(anz)); for(i=0;i<12;i++) n[i] +=old[i]; } else if (strcmp(w, "OP") == 0) { int anz; anz = atoi(readword()); local += anz; } else if (strcmp(w, "END") == 0) { n[0] += local; return; } } } void program() { char *w; w = readword(); statementlist(); } void reset() { int i; for(i=0;i<20;i++) n[i] = 0; } int sum() { int i; int s; for(i=0;i<20;i++) s += n[i]; return s; } int main() { int i, anz; in = fopen("complex.in", "r"); fscanf(in, "%d", &anz); for(i=0;i