Nuestro equipo de expertos pasados varios días de investigación y recopilar de información, encontramos la solución, nuestro deseo es que te sea útil para tu plan.
Ejemplo: Infijo para postfijar la conversación usando la pila
/*
Infix to postfix conversion in C++
Input Postfix expression must be in a desired format.
Operands and operator, both must be single character.
Only '+' , '-' , '*', '/' and '$' (for exponentiation) operators are expected.
*/#include #include #include usingnamespace std;// Function to convert Infix expression to postfix
string InfixToPostfix(string expression);// Function to verify whether an operator has higher precedence over otherintHasHigherPrecedence(char operator1,char operator2);// Function to verify whether a character is operator symbol or not. boolIsOperator(char C);// Function to verify whether a character is alphanumeric chanaracter (letter or numeric digit) or not. boolIsOperand(char C);intmain()
string expression;
cout<<"Enter Infix Expression n";getline(cin,expression);
string postfix =InfixToPostfix(expression);
cout<<"Output = "<<postfix<<"n";// Function to evaluate Postfix expression and return output
string InfixToPostfix(string expression)// Declaring a Stack from Standard template library in C++.
stack<char> S;
string postfix ="";// Initialize postfix as empty string.for(int i =0;i< expression.length();i++)while(!S.empty())
postfix += S.top();
S.pop();return postfix;// Function to verify whether a character is english letter or numeric digit. // We are assuming in this solution that operand will be a single characterboolIsOperand(char C)if(C >='0'&& C <='9')returntrue;if(C >='a'&& C <='z')returntrue;if(C >='A'&& C <='Z')returntrue;returnfalse;// Function to verify whether a character is operator symbol or not. boolIsOperator(char C)// Function to verify whether an operator is right associative or not. intIsRightAssociative(char op)if(op =='$')returntrue;returnfalse;// Function to get weight of an operator. An operator with higher weight will have higher precedence. intGetOperatorWeight(char op)int weight =-1;switch(op)case'+':case'-':
weight =1;case'*':case'/':
weight =2;case'$':
weight =3;return weight;// Function to perform an operation and return output. intHasHigherPrecedence(char op1,char op2)int op1Weight =GetOperatorWeight(op1);int op2Weight =GetOperatorWeight(op2);// If operators have equal precedence, return true if they are left associative. // return false, if right associative. // if operator is left-associative, left one should be given priority. if(op1Weight == op2Weight)if(IsRightAssociative(op1))returnfalse;elsereturntrue;return op1Weight > op2Weight ?true:false;
Reseñas y calificaciones
Tienes la posibilidad recomendar esta sección si te fue de ayuda.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)