Question
How can I edit the following code to show infix to postfix for expressions dealing with numbers? The current program only runs with letter variables.
How can I edit the following code to show infix to postfix for expressions dealing with numbers? The current program only runs with letter variables.
#include
#include
using namespace std;
bool isOperator(char c)
{
if(c=='+'||c=='-'||c=='*'||c=='/'||c=='^')
{
return true;
}
else
{
return false;
}
}
int precedence(char c)
{
if(c == '^')
return 3;
else if(c == '*' || c == '/')
return 2;
else if(c == '+' || c == '-')
return 1;
else
return -1;
}
string InfixToPostfix(stack
{
string postfix;
for(int i=0;i { if((infix[i] >= 'a' && infix[i] <= 'z') ||(infix[i] >= 'A' && infix[i] <= 'Z')) { postfix+=infix[i]; } else if(infix[i] == '(') { s.push(infix[i]); } else if(infix[i] == ')') { while((s.top()!='(') && (!s.empty())) { char temp=s.top(); postfix+=temp; s.pop(); } if(s.top()=='(') { s.pop(); } } else if(isOperator(infix[i])) { if(s.empty()) { s.push(infix[i]); } else { if(precedence(infix[i])>precedence(s.top())) { s.push(infix[i]); } else if((precedence(infix[i])==precedence(s.top()))&&(infix[i]=='^')) { s.push(infix[i]); } else { while((!s.empty())&&( precedence(infix[i])<=precedence(s.top()))) { postfix+=s.top(); s.pop(); } s.push(infix[i]); } } } } while(!s.empty()) { postfix+=s.top(); s.pop(); } return postfix; } int main() { string infix_exp, postfix_exp; cout<<"Enter a Infix Expression :"< cin>>infix_exp; stack cout<<"INFIX EXPRESSION: "< postfix_exp = InfixToPostfix(stack, infix_exp); cout< return 0; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started