nikminer4sv

Untitled

Feb 12th, 2021
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8.     string inputString;
  9.     string outputString = "";
  10.     stack <char> operators;
  11.     bool flag = false;
  12.  
  13.     cin >> inputString;
  14.  
  15.     for (int i = 0; i < inputString.length(); i++) {
  16.         if (inputString[i] == '(')
  17.             operators.push('(');
  18.         else if (inputString[i] == ')') {
  19.             while (operators.top() != '(') {
  20.                 outputString += operators.top();
  21.                 outputString += " ";
  22.                 operators.pop();
  23.             }
  24.             operators.pop();
  25.         }
  26.         else if (inputString[i] != '+' && inputString[i] != '-' && inputString[i] != '*' &&
  27.              inputString[i] != '/' && inputString[i] != '^') {
  28.  
  29.             string temp = "";
  30.  
  31.             while (inputString[i] != '+' && inputString[i] != '-' && inputString[i] != '*' &&
  32.                    inputString[i] != '/' && inputString[i] != '^' && inputString[i] != ')' &&
  33.                    inputString[i] != '(') {
  34.  
  35.                 temp += inputString[i];
  36.                 if (i+1 != inputString.length())
  37.                     i++;
  38.                 else {
  39.                     flag = true;
  40.                     break;
  41.                 }
  42.             }  
  43.            
  44.             i--;
  45.  
  46.             outputString += temp + " ";
  47.             if (flag == true)
  48.                 break;
  49.         } else {
  50.             if ((!operators.empty()) && ((((inputString[i] == '+' || inputString[i] == '-') &&
  51.                (operators.top() != '('))) || ((operators.top() != '+' && operators.top() != '-') && operators.top() != '('))) {
  52.                 outputString += operators.top();
  53.                 outputString += " ";
  54.                 operators.pop();
  55.                 operators.push(inputString[i]);
  56.  
  57.             } else {
  58.                 operators.push(inputString[i]);
  59.             }
  60.             }
  61.     }
  62.     while (!operators.empty()) {
  63.         outputString += operators.top();
  64.         outputString += " ";
  65.         operators.pop();
  66.     }
  67.     cout << outputString;  
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment