I mean like this (a+(b*c)) and also I updated the code.
Here’s my code –
#include <bits/stdc++.h>
using namespace std;
void postfix(string str)
{
stack s;
for(int i = 0; i < str.length(); ++i)
{
if(str[i] == ‘)’)
{
while(s.top() != ‘(’)
{
cout << s.top();
s.pop();
}
s.pop();
}
else if(str[i] == ‘’ || str[i] == ‘/’ || str[i] == ‘+’ || str[i] == ‘-’ || str[i] == ‘^’)
{
switch(str[i])
{
case ‘+’:
if(s.top() == '’ || s.top() == ‘/’ || s.top() == ‘^’ || s.top() == ‘-’)
{
while(s.top() == ‘’ || s.top() == ‘/’ || s.top() == ‘^’ || s.top() == ‘-’)
{
cout << s.top();
s.pop();
}
s.push(str[i]);
}
else
s.push(str[i]);
break;
case ‘/’:
if(s.top() == ‘^’ || s.top() == '’)
{
while(s.top() == ‘^’ || s.top() == ‘’)
{
cout << s.top();
s.pop();
}
s.push(str[i]);
}
else
s.push(str[i]);
break;
case '’:
if(s.top() == ‘^’ || s.top() == ‘/’)
{
while(s.top() == ‘^’ || s.top() == ‘/’)
{
cout << s.top();
s.pop();
}
s.push(str[i]);
}
else
s.push(str[i]);
break;
case ‘-’:
if(s.top() == ‘+’ || s.top() == ‘’ || s.top() == ‘/’ || s.top() == ‘^’)
{
while(s.top() == ‘+’ || s.top() == '’ || s.top() == ‘/’ || s.top() == ‘^’ )
{
cout << s.top();
s.pop();
}
s.push(str[i]);
}
else
s.push(str[i]);
break;
case ‘^’:
s.push(str[i]);
break;
}
}
else
{
if(str[i] == '(')
s.push(str[i]);
else
cout << str[i];
}
}
cout << endl;
}
int main(void)
{
int t;
cin >> t;
string s[t];
for(int i = 0; i < t; ++i)
{
cin >> s[i];
}
for(int i = 0; i < t; ++i)
{
postfix(s[i]);
}
return 0;
}