Obtener el valor de una expresión postfix de un número de más de un dígito.
#include
#include
#include
using namespace std;
float postix_evaluate(string expr)
{
stack
for (int x = 0; x < expr.length(); x++)
{
if (isdigit(expr[x]))
{
float num = 0;
while (isdigit(expr[x]))
{
num = num * 10 + (expr[x] - '0');
x++;
}
x--;
stk.push(num);
}
else
{
float val;
float op2 = stk.top();
stk.pop();
float op1 = stk.top();
stk.top();
switch (expr[x])
{
case '+':
val = op1 + op2;
break;
case '-':
val = op1 - op2;
break;
case '*':
val = op1 * op2;
break;
case '/':
val = op1 / op2;
break;
}
stk.push(val);
}
}
return stk.top();
}
int main()
{
string line;
cout << “Ingrese la expresion” << endl;
cin >> line;
cout << “El valor de la expresion es: ” << postix_evaluate(line) << endl;
return 0;
}
Cuando ingreso la expresión “213+” obtengo el resultado “4”; pero espero obtener 24 (21+3).
¿Qué debo hacer para tomar operandos con más de un dígito?
davy.ai
Puede modificar el código para tomar operandos con más de un dígito al recorrer la cadena de expresión y verificar si hay varios dígitos. Si se encuentran varios dígitos, puede convertirlos en un número único y ponerlos en la pila. Por ejemplo: