ccbeginner

UVa Q727

Feb 22nd, 2020
97
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //UVa Q727
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. string func(string s){
  6.     string ret;
  7.     vector<char> v;
  8.     for(unsigned i = 0; i < s.size(); ++i){
  9.          if(s[i] == '(')v.emplace_back(s[i]);
  10.          else if(s[i] == ')'){
  11.              while(v.back() != '('){
  12.                  ret += v.back();
  13.                  v.pop_back();
  14.              }
  15.              v.pop_back();
  16.          }else if(s[i] == '*' || s[i] == '/'){
  17.              while(!v.empty() && (v.back() == '*' || v.back() == '/')){
  18.                  ret += v.back();
  19.                  v.pop_back();
  20.              }
  21.              v.emplace_back(s[i]);
  22.          }else if(s[i] == '+' || s[i] == '-'){
  23.              while(!v.empty() && (v.back() == '+' || v.back() == '-' || v.back() == '*' || v.back() == '/')){
  24.                  ret += v.back();
  25.                  v.pop_back();
  26.              }
  27.              v.emplace_back(s[i]);
  28.          }
  29.          else ret += s[i];
  30.     }
  31.     while(!v.empty()){
  32.         ret += v.back();
  33.         v.pop_back();
  34.     }
  35.     return ret;
  36. }
  37.  
  38. int main(){
  39.     int t;
  40.     cin >> t;
  41.     cin.get();
  42.     cin.get();
  43.     while(t--){
  44.         string s, in;
  45.         while(getline(cin, in)){
  46.             if(in == "")break;
  47.             s += in;
  48.         }
  49.         cout << func(s) << '\n';
  50.         if(t)cout << '\n';
  51.     }
  52.     return 0;
  53. }
RAW Paste Data