I need a complete working code for a solution to this proble

I need a complete working code for a solution to this problem using visual studio 2015:

C++ Programming (7th Edition)

Chapter 17, Problem 10PE

Solution

Ans:

#include <iostream>
using namespace std;
class InfixToPostfix
{
private:char *p;//for infix expression
   char *q;//for postfix expression
   char *stack; //stack array
   int top; //top
public: InfixToPostfix();//constructor
   void getInfix();//ro read infix expression
   void showInfix();//to display infix expression
   void showPostfix();//to display postfix expression
   void push(char ele);//to push elements into the stack
   char pop();//to pop elements from stack
   void convertToPostfix();//to convert infix to postfix
   int precedence(char);//to find precedence of an operator
   ~InfixToPostfix();//destructor
};

InfixToPostfix::InfixToPostfix(void)
{
top=-1;
p=new char[100];
q=new char[100];
stack=new char[10];

}


void InfixToPostfix::getInfix(){
cout<<\"enter infix expression:\";
cin>>p;
}

void InfixToPostfix::showInfix(){
cout<<\"\ Given Infix Expression: \"<<p<<\"\ \";
}


void InfixToPostfix::convertToPostfix(){
int i,j;
char ch;//to get next symbol
j=0;
for(i=0;*(p+i)!=\'\\0\';i++)
{
if(isalnum(*(p+i)))//if it is an operand
   {
   q[j]=*(p+i);
   j++;
   }
else if(*(p+i)==\'(\')//if it is a left brace
push(*(p+i));
else if(*(p+i)==\')\')//if it is a right brace
{
   while((ch=pop())!=\'(\')
   {
   q[j]=ch;j++;
   }
}//end of else if
else //if it is an operator
{
while(precedence(stack[top])>=precedence(*(p+i)) && top!=-1)
{
ch=pop();
q[j]=ch;j++;
}//end of while
push(*(p+i));//push next symbol into the stack
} //end of else
}//end of for loop
while(top!=-1)
{
ch=pop();
q[j]=ch;j++;
}
q[j]=\'\\0\';
}//end of convertToPostfix()

void InfixToPostfix::showPostfix() //to display postfix expression
{
cout<<\"Postfix Expression: \"<<q;
}

void InfixToPostfix::push(char ele) //push function
{
if(top==9)
{
cout<<\"overflow\";
}
else
{
top++;stack[top]=ele;
}
}//end of push function

char InfixToPostfix::pop() //pop function
{
if(top==-1)
{
cout<<\"underflow\";return -1;
}
else
{
char ch=stack[top];
top--;
return ch;
}
} //end of pop()


int InfixToPostfix::precedence(char ele) //to find precedence
{
switch(ele)
{
case \'+\':
case \'-\':return 1;
case \'*\':
case \'/\':return 2;
default: return 0;
}
} //end of precedence


InfixToPostfix :: ~InfixToPostfix()//destructor
{
delete []p;
delete []q;
delete []stack;
}

int main()
{
InfixToPostfix r;
r.getInfix();
r.showInfix();
r.convertToPostfix();
r.showPostfix();
return 0;
}//end of main

I need a complete working code for a solution to this problem using visual studio 2015: C++ Programming (7th Edition) Chapter 17, Problem 10PESolutionAns: #incl
I need a complete working code for a solution to this problem using visual studio 2015: C++ Programming (7th Edition) Chapter 17, Problem 10PESolutionAns: #incl
I need a complete working code for a solution to this problem using visual studio 2015: C++ Programming (7th Edition) Chapter 17, Problem 10PESolutionAns: #incl

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site