I need help the Data Structure in c error infixToPostfix her
I need help the Data Structure in c++ error infixToPostfix
here is my source code
#include
#include
#include
using namespace std;
template
class infixToPostfix
{
string infx;
string pfx;
public:
infixToPostfix(string);
void getlnfix(string);
void showlnfix();
void convertToPostfix(stack&);
bool precedence(char, char);
void showPostfix();
};
template
infixToPostfix::infixToPostfix(string str)
{
getlnfix(str);
pfx = \"\";
}
template
void infixToPostfix::getlnfix(string str)
{
infx = str;
}
template
void infixToPostfix::showlnfix()
{
cout << \"infix expression : \" << infx << endl;
}
template
void infixToPostfix::convertToPostfix(stack &objStack)
{
int i = 0;
while (infx[i] !=\'/0\')
{
switch (infx[i])
{
case\'A\':
case\'B\':
case\'C\':
case\'D\':
case\'E\':
case\'F\':
case\'G\':
case\'H\':
pfx += infx[i];
break;
case\'(\':
objStack.push(infx[i]);
break;
case\')\':
while (objStack.top() !=\'(\')
{
pfx += objStack.top();
objStack.pop();
}
if (objStack.top() == \'(\')
objStack.pop();
break;
case\'+\':
case\'-\':
case\'*\':
case\'/\':
while (precedence(objStack.top(),infx[i]))
{
pfx += objStack.top();
objStack.pop();
}
objStack.push(infx[i]);
break;
}
i++;
}
}
template
bool infixToPostfix::precedence(char opr1, char opr2)
{
switch (opr1)
{
case\'+\':
if (opr2 == \'+\' || opr2 == \'-\')
return true;
else if (opr2 == \'*\' || opr2 == \'/\')
return false;
break;
case\'-\':
if (opr2 == \'+\' || opr2 == \'-\')
return true;
else if (opr2 == \'*\' || opr2 == \'/\')
return false;
break;
case\'*\':
if (opr2 == \'+\' || opr2 == \'-\')
return false;
else if (opr2 == \'*\' || opr2 == \'/\')
return true;
break;
case\'/\':
if (opr2 == \'+\' || opr2 == \'-\')
return false;
else if (opr2 == \'*\' || opr2 == \'/\')
return true;
break;
}
}
template
void infixToPostfix::showPostfix()
{
cout << \"Equivalent Postfix expression :\" << pfx ;
}
//////////////////////////////////////////
template
int main()
{
string str;
cout << \"Enter the infix expression: \";
cin >> str;
infixToPostfix obj = new infixToPostfix(str);
stack objStack;
objStack.initializeStack();
obj.convertToPostfix(objStack);
obj.showPostfix();
return 0;
Solution
Here is the error free code for you:
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
template<class T>
class infixToPostfix
{
string infx;
string pfx;
public:
infixToPostfix(string);
void getlnfix(string);
void showlnfix();
void convertToPostfix(stack<T>&);
bool precedence(char, char);
void showPostfix();
};
template<class T>
infixToPostfix<T>::infixToPostfix(string str)
{
getlnfix(str);
pfx = \"\";
}
template<class T>
void infixToPostfix<T>::getlnfix(string str)
{
infx = str;
}
template<class T>
void infixToPostfix<T>::showlnfix()
{
cout << \"infix expression : \" << infx << endl;
}
template<class T>
void infixToPostfix<T>::convertToPostfix(stack<T> &objStack)
{
int i = 0;
while (infx[i] !=\'\\0\')
{
switch (infx[i])
{
case\'A\':
case\'B\':
case\'C\':
case\'D\':
case\'E\':
case\'F\':
case\'G\':
case\'H\':
pfx += infx[i];
break;
case\'(\':
objStack.push(infx[i]);
break;
case\')\':
while (objStack.top() !=\'(\')
{
pfx += objStack.top();
objStack.pop();
}
if (objStack.top() == \'(\')
objStack.pop();
break;
case\'+\':
case\'-\':
case\'*\':
case\'/\':
while (precedence(objStack.top(),infx[i]))
{
pfx += objStack.top();
objStack.pop();
}
objStack.push(infx[i]);
break;
}
i++;
}
}
template<class T>
bool infixToPostfix<T>::precedence(char opr1, char opr2)
{
switch (opr1)
{
case\'+\':
if (opr2 == \'+\' || opr2 == \'-\')
return true;
else if (opr2 == \'*\' || opr2 == \'/\')
return false;
break;
case\'-\':
if (opr2 == \'+\' || opr2 == \'-\')
return true;
else if (opr2 == \'*\' || opr2 == \'/\')
return false;
break;
case\'*\':
if (opr2 == \'+\' || opr2 == \'-\')
return false;
else if (opr2 == \'*\' || opr2 == \'/\')
return true;
break;
case\'/\':
if (opr2 == \'+\' || opr2 == \'-\')
return false;
else if (opr2 == \'*\' || opr2 == \'/\')
return true;
break;
}
return false;
}
template<class T>
void infixToPostfix<T>::showPostfix()
{
cout << \"Equivalent Postfix expression :\" << pfx ;
}
//////////////////////////////////////////
int main()
{
string str;
cout << \"Enter the infix expression: \";
cin >> str;
infixToPostfix<char> obj(str);
stack<char> objStack;
//objStack.initializeStack();
obj.convertToPostfix(objStack);
obj.showPostfix();
return 0;
}




