//Implementation File #include #include #include "myStack.h" #include "infixToPostfix.h" using namespace std; void infixToPostfix::convertToPostfix() { stackType oprStack; int i; char sOpr; i = 0; pfx = ""; while (ifx[i] != ';') { ifx[i] = ifx[i+1]; switch (ifx[i]) { case 'A': case 'B': case 'C': case 'D': case 'F': case 'G': pfx += ifx[i++]; break; case ' ': break; case '^': oprStack.push(ifx[i]); break; case '+': case '-': case '*': case '/': while (!oprStack.isEmptyStack() && !precedence(ifx[i], oprStack.top())) { pfx += oprStack.top(); oprStack.pop(); }//end while oprStack.push(ifx[i]); break; case '(': oprStack.push(ifx[i]); break; case ')': sOpr = oprStack.top(); oprStack.pop(); while(sOpr != '(') { pfx += sOpr; if(!oprStack.isEmptyStack()) { sOpr = oprStack.top(); oprStack.pop(); } }//end while break; default: break; }//end switch }//end while while (!oprStack.isEmptyStack()) { sOpr = oprStack.top(); pfx += sOpr; }//end while }//end convertToPostfix bool infixToPostfix::precedence(char opr1, char opr2) { int prec1, prec2; if(opr1 == '*' || opr1 =='/') prec1 = 2; else if(opr1 == '+' || opr1 == '-') prec1 = 1; else if(opr1 ='(') prec1 = 0; if(opr2 == '*' || opr2 == '/') prec2 = 2; else if(opr2 =='+' || opr2 == '-') prec2 = 1; return(prec1 >= prec2); }//end precedence void infixToPostfix::getInfix(string data) { ifx = data; convertToPostfix(); } void infixToPostfix::showInfix() { cout<<"Infix: "<