#include char extdata[300]; char* data=extdata+1;int L; char* stack[300]; int sp; char * closing[300]; int getop(char x) { switch(x) { case '+' : return 1; case '-' : return 2; case '*' : return 3; case '/' : return 4; default : return 0; } } void simplify(char *strt,char *stop,int preop,int postop) { int pom; int remove=1; int worstop=5; char* p; char *q=strt; while(q(pom=getop(*q))) worstop=pom; break; } q++; } remove=1; if(worstop!=5) { if((preop==4) ) remove=0; else if( (preop==2)) { if( (worstop<=2)) remove=0; if((postop>2) && (worstop<=2)) remove=0; } else if(preop>worstop) remove=0; else if((postop>2) && (worstop<=2)) remove=0; } if(remove) { *(strt-1)=' '; *stop=' '; }else preop=postop=1; q=strt; while(q=0;i--) { if(data[i]=='(') closing[i]=stack[--sp]; else if (data[i]==')') stack[sp++]=data+i; } simplify(data,data+L,1,1); stripspaces(); puts(data); } return 0; }