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 s, string infix)

{

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 stack;

cout<<"INFIX EXPRESSION: "<

postfix_exp = InfixToPostfix(stack, infix_exp);

cout<

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!