Advertisement
Eternoseeker

Infix to Postfix

Nov 29th, 2022 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | Source Code | 0 0
  1. #include<iostream>
  2. #include<stack>
  3. using namespace std;
  4.  
  5. class postfix{
  6.     stack <char>a;
  7. public:
  8.     int precedence(char c){
  9.         if(c=='^'){
  10.             return 3;
  11.         }
  12.         else if(c=='/' || c=='*')
  13.         {
  14.             return 2;
  15.         }
  16.         else if(c=='+' || c=='-'){
  17.             return 1;
  18.         }
  19.         else{
  20.             return -99;
  21.         }
  22.     }
  23.     bool isoperator(char c){
  24.         if(c=='*' || c=='/' || c=='^' || c== '+' || c=='-'){
  25.             return true;
  26.         }
  27.         return false;
  28.     }
  29.     void infixtopostfix(string s){
  30.         int i=0;
  31.         while(s[i]!='\0'){
  32.             if(s[i]=='('){
  33.                 a.push('(');
  34.             }
  35.             else if(s[i]>='0' && s[i]<='9'){
  36.                 cout<<s[i];
  37.             }
  38.  
  39.             else if(isoperator(s[i])){
  40.                 if(a.empty()){
  41.                     a.push(s[i]);
  42.                 }
  43.                 else if(a.top()=='('){
  44.                     a.push(s[i]);
  45.                 }
  46.                 else if(precedence(s[i])>precedence(a.top())){
  47.                     a.push(s[i]);
  48.                 }
  49.                 else if(precedence(s[i])<=precedence(a.top())){
  50.                     while(!a.empty() && precedence(s[i])<=precedence(a.top())){
  51.                         cout<<a.top();
  52.                         a.pop();
  53.                     }
  54.                     a.push(s[i]);
  55.                 }
  56.             }
  57.             else if(s[i] ==')'){
  58.               while(a.top()!='(' && !a.empty()){
  59.                   cout<<a.top();
  60.                   a.pop();
  61.               }
  62.               a.pop();
  63.             }
  64.             i++;
  65.         }
  66.         while(!a.empty()){
  67.             cout<<a.top();
  68.             a.pop();
  69.         }
  70.     }
  71. };
  72.  
  73. int main(){
  74.     postfix p;
  75.     p.infixtopostfix("(1+2)*3^2");
  76. }
  77.  
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement