fork download
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <fstream>
  4. #include <iostream>
  5. #include <string>
  6. #include <vector>
  7. #include <stack>
  8. using namespace std;
  9.  
  10. int main(){
  11.  
  12. #ifndef ONLINE_JUDGE
  13. freopen("input.txt", "r", stdin);
  14. #endif
  15.  
  16. size_t i;
  17. int n, run=0;
  18. bool first=true;
  19. string str;
  20. cin >> n;
  21.  
  22. getchar();
  23. getline(cin, str);
  24.  
  25. while(run < n){
  26. vector<string> eq;
  27. stack<char> op;
  28.  
  29. if(!first) cout << endl;
  30. first=false;
  31.  
  32. while(getline(cin, str) && str.size()!=0){
  33. eq.push_back(str);
  34. }
  35.  
  36. for(i=0 ; i<eq.size() ; ++i){
  37.  
  38. if(eq[i][0]=='('){
  39. op.push(eq[i][0]);
  40. }
  41. else if(eq[i][0]==')'){
  42. while(op.top()!='('){
  43. cout << op.top();
  44. op.pop();
  45. }
  46. op.pop();
  47. if(!op.empty()){
  48. if(op.top()=='*'||op.top()=='/'){
  49. cout << op.top();
  50. op.pop();
  51. }
  52. }
  53. }
  54. else if(eq[i][0]<='9' && eq[i][0]>='0'){
  55. cout << eq[i];
  56. }
  57. else{
  58. if(op.empty() || (!op.empty() && op.top()=='(')){
  59. op.push(eq[i][0]);
  60. }
  61. else{
  62. if(eq[i][0]=='+'||eq[i][0]=='-'){
  63. if(op.top()=='*'||op.top()=='/'){
  64. cout << op.top();
  65. op.pop();
  66. if(!op.empty()){
  67. cout << op.top();
  68. op.pop();
  69. }
  70. }
  71. else{
  72. cout << op.top();
  73. op.pop();
  74. }
  75. op.push(eq[i][0]);
  76. }
  77. else if(eq[i][0]=='*'||eq[i][0]=='/'){
  78. if(!op.empty() && (op.top()=='+'||op.top()=='-')){
  79. op.push(eq[i][0]);
  80. }
  81. else{
  82. cout << op.top();
  83. op.pop();
  84. op.push(eq[i][0]);
  85. }
  86. }
  87. }
  88. }
  89. }
  90. while(!op.empty()){
  91. cout << op.top();
  92. op.pop();
  93. }
  94. cout << endl;
  95. run++;
  96. }
  97. return 0;
  98. }
  99.  
Success #stdin #stdout 0.02s 2732KB
stdin
Standard input is empty
stdout
Standard output is empty