fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <vector>
  7. #include <list>
  8. #include <deque>
  9. #include <queue>
  10. #include <stack>
  11. #include <map>
  12. #include <set>
  13. #include <bitset>
  14. #include <cctype>
  15. #include <cstring>
  16. #include <typeinfo>
  17. #include <exception>
  18. #include <stdexcept>
  19. #include <memory>
  20. #include <fstream>
  21. #include <string>
  22. #include <sstream>
  23. #include <functional>
  24. #include <iterator>
  25. #include <algorithm>
  26. #include <cassert>
  27. #include <cfloat>
  28. #include <climits>
  29. #include <cstdio>
  30. #include <locale>
  31. #include <limits>
  32. #include <utility>
  33.  
  34. using namespace std;
  35.  
  36. int main()
  37. {
  38. //freopen("input.txt","r",stdin);
  39. //freopen("output.txt","w",stdout);
  40. string given,temp,output;
  41. stack<char>maintanance;
  42. int cases;
  43. cin>>cases;
  44. getchar();
  45. getchar();
  46. while(cases--)
  47. {
  48. while(getline(cin,temp)&&temp.size())
  49. {
  50. given+=temp;
  51. temp.clear();
  52. }
  53. for(int i=0;i<given.size();i++)
  54. {
  55. if(given[i]=='(')
  56. {
  57. maintanance.push(given[i]);
  58. }
  59. else if(given[i]==')')
  60. {
  61. if(maintanance.size())
  62. {
  63. while(maintanance.top()!='(')
  64. {
  65. output+=maintanance.top();
  66. maintanance.pop();
  67. }
  68. }
  69. maintanance.pop();
  70. }
  71. else if(given[i]=='/'||given[i]=='*')
  72. {
  73. if(maintanance.size())
  74. {
  75. while((maintanance.top()=='*'||maintanance.top()=='/'))
  76. {
  77. output+=maintanance.top();
  78. maintanance.pop();
  79. }
  80. }
  81.  
  82. maintanance.push(given[i]);
  83. }
  84. else if((given[i]=='+'||given[i]=='-'))
  85. {
  86. if(maintanance.size())
  87. {
  88. while(maintanance.top()=='*'||maintanance.top()=='/'||maintanance.top()=='+'||maintanance.top()=='-')
  89. {
  90. output+=maintanance.top();
  91. maintanance.pop();
  92. }
  93. }
  94. maintanance.push(given[i]);
  95. }
  96. else
  97. {
  98. output+=given[i];
  99. }
  100.  
  101. }
  102. while(!maintanance.empty())
  103. {
  104. output+=maintanance.top();
  105. maintanance.pop();
  106. }
  107. cout<<output<<endl;
  108. if(cases>0)
  109. {
  110. cout<<endl;
  111. }
  112. given.clear();
  113. temp.clear();
  114. output.clear();
  115. maintanance=stack<char>();
  116.  
  117. }
  118. return 0;
  119. }
Runtime error #stdin #stdout 0s 3488KB
stdin
2

3
+
2
*
5

3
*
2
+
5
stdout
325*+