a*b+(c-d/e)*f#
ab*cde/-f*+
#include<bits/stdc++.h> using namespace std; char op[10000]; char s[2000]; int judge(char c) { if(c=='+'||c=='-')return 1; if(c=='/'||c=='*')return 2; if(c=='(')return 3; else return 4; } int main() { int n; // while(~scanf("%d",&n)) { // while(n--) { scanf("%s",s); int top=0; for(int i=0; s[i]!='#';) { if(s[i]>='a'&&s[i]<='z'||s[i]=='.') { while(s[i]>='a'&&s[i]<='z'||s[i]=='.') printf("%c",s[i++]); // printf(" "); continue; } if(top==0) { op[++top]=s[i++]; continue; } if(judge(op[top])>=judge(s[i])) { while(judge(op[top])>=judge(s[i])&&top>0) //要用循环<span id="transmark"></span> { if(op[top]!='(') printf("%c",op[top--]); else break; } op[++top]=s[i]; i++; } else { if(s[i]==')') { while(op[top]!='(') printf("%c",op[top--]); top--; } else op[++top]=s[i]; i++; } } while(top) printf("%c",op[top--]); // printf("=\n"); } } return 0; }
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。