#include <iostream>
#include <stack>
#include <sstream>
#include <string>
#include <cctype>
using namespace std;
// Función para evaluar una expresión en notación posfija
int evaluatePostfix(const string& expression) {
stack<int> s;
istringstream iss(expression);
string token;
while (iss >> token) {
// Si el token es un número, lo empujamos a la pila
if (isdigit(token[0])) {
s.push(stoi(token));
}
// Si el token es un operador, realizamos la operación
else {
int operand2 = s.top(); s.pop();
int operand1 = s.top(); s.pop();
switch (token[0]) {
case '+':
s.push(operand1 + operand2);
break;
case '-':
s.push(operand1 - operand2);
break;
case '*':
s.push(operand1 * operand2);
break;
case '/':
s.push(operand1 / operand2);
break;
default:
cout << "Operador desconocido: " << token << endl;
return 0;
}
}
}
return s.top(); // El resultado final estará en la parte superior de la pila
}
int main() {
string expression;
cout << "Ingrese una expresión en notación posfija (separada por espacios): ";
getline(cin, expression);
int result = evaluatePostfix(expression);
cout << "El resultado de la expresión es: " << result << endl;
return 0;
}