int main() { int len=0,i=0,j; int m,n,result; char op; int number=0; char enter[100]; int s1[100],top1=0,top2=0; char s2[100]; s2[top2]='(';top2++; scanf("%s",enter); for(i=0;i<strlen(enter);i++) { if(enter[i]>='0' && enter[i]<='9') { if (enter[i+1]>='0' && enter[i+1]<='9') number=10*number+enter[i]-'0'; else { s[len].index=1; s[len].a=10*number+enter[i]-'0'; s[len].b='0'; len++; number=0; } } else { s[len].index=0; s[len].a=0; s[len].b=enter[i]; len++; } /*printf("len@=%d,i=%d\n",len,i); */ } if (enter[strlen(enter)-1]!='=') { s[len].index=0; s[len].a=0; s[len].b='='; len++; } for(i=0;i<len;i++) { if (s[i].b=='=') { while(top1!=1) { m=s1[top1-1]; top1--; n=s1[top1-1]; top1--; op=s2[top2-1]; top2--; result=oper(n,m,op); s1[top1]=result; top1++; } printf("%d\n",s1[top1-1]); break; } if (s[i].b==')') { while(s2[top2-1]!='(') { m=s1[top1-1]; top1--; n=s1[top1-1]; top1--; op=s2[top2-1]; top2--; result=oper(n,m,op); s1[top1]=result; top1++; } top2--; } else { if(s[i].index==1) { s1[top1]=s[i].a; top1++; } else { if (comp1(s[i].b,s2[top2-1])==1) { s2[top2]=s[i].b; top2++; } else { if(comp2(s[i].b,s2[top2-1])==0) { m=s1[top1-1]; top1--; n=s1[top1-1]; top1--; op=s2[top2-1]; top2--; result=oper(n,m,op); s1[top1]=result; top1++; } s2[top2]=s[i].b; top2++; } } } /* if (s[i].index==1) { for (j=0;j<top1;j++) printf("%d ",s1[j]); printf("\n"); } if (s[i].index==0) { for (j=0;j<top2;j++) printf("%c ",s2[j]); printf("\n"); } */ } getch(); }

评论