Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Trying to make a program to convert infix to postfix in c++. I am stuck here trying to get a result of infix to postfix

Trying to make a program to convert infix to postfix in c++. I am stuck here trying to get a result of infix to postfix to print. Could anyone help me print my result of postfix and maybe leave comments so I can understand better? Thank you. #include #include #include #include using namespace std; class Expression{ public: string inToPost(); string convertThis; // Expression that we want converted Expression(string input, int direction); //constructor bool isOperator(char character); bool isOperand(char character); int isHigherWeight(char character); bool isHigherPrecedence(char op1, char op2); string printResult(); private: string infix; string postfix; string prefix; }; //Constructor function Expression::Expression(string input, int direction){ switch (direction){ case 1: infix = input; case 2: postfix = input; case 3: prefix = input; } } //Operator Function checks to see if character is a legal symbol bool Expression::isOperator(char character){ if((character == '*')||(character == '+')||(character == '-')||(character == '/')) return true; else return false; } //Operand Function checks to see if character is a legal character bool Expression::isOperand(char character){ if(character >= 'a' && character <= 'z') return true; if(character >= 'A' && character <= 'Z') return true; if(character >= '0' && character <= '9') return true; else return false; } //Function determines the weight of Operator. int Expression::isHigherWeight(char character){ int weight = 0; // or -1? switch(character){ case '+': case '-': weight = 1; case '*': case '/': weight = 2; } return weight; } //Function that compares weights of two different Operators. bool Expression::isHigherPrecedence(char oper1, char oper2){ int op1Weight = isHigherWeight(oper1); int op2Weight = isHigherWeight(oper2); // If operators have equal precedence, return true // return false return op1Weight > op2Weight ? true: false;{ } } string Expression::inToPost(){ stack Stack; string postfix = ""; // Initialize postfix as empty string. for(int i = 0;i< convertThis.length();i++){ //go through array of string convertThis if (convertThis[i] == '('){ //1-Read the left parenthesis and push it onto the stack Stack.push(convertThis[i]); } else if(isOperand(convertThis[i])){ //2-else if( the next input is a number or letter) cout << convertThis[i]; //3-Read the operand and write it to the output } else if(isOperator(convertThis[i])){ //4-else if the next input is operator cout << Stack.top(); Stack.pop(); //5-Print the top operation and pop it } //6- while(!Stack.empty() && Stack.top() != '(' && isHigherPrecedence(Stack.top(),convertThis[i])){ Stack.push(convertThis[i]); //7- Read the next input symbol, and push this symbol onto the stack } // 8- Read and discard the next input symbol(which should be a right parenthesis). if (convertThis[i] == ')'){ i+1; // 9- Print the top operation and pop it; Keep printing and popping until while (!Stack.top() == '('){ cout << Stack.top(); Stack.pop(); } } Stack.pop(); //10- Finally, pop the left parenthesis. while(!Stack.empty()){ cout << Stack.top(); } return postfix; } } string Expression::printResult(){ return postfix; } int main(){ string convertThis; int choice; cout << "|-----Here is my conversion menu-----|" << endl; cout << "|----What are you converting to?-----|" << endl << endl; cout << "1- Infix to postfix" << endl; cout << "2- Infix to prefix" << endl; cout << "3- postfix to infix?" << endl; cout << "4- prefix to infix?" << endl; //cin >> choice; //cin.ignore(); cout << "Now enter the expression you want to convert "; getline(cin,convertThis); //Expression printResult; //cout << printResult.printResult(); } 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Data Analysis Using SQL And Excel

Authors: Gordon S Linoff

2nd Edition

111902143X, 9781119021438

More Books

Students also viewed these Databases questions

Question

What is linear transformation? Define with example

Answered: 1 week ago