Saltar a contenido

Última actualización:2026-10-12

Diseño de una calculadora de pila en C++

Escribir una calculadora de pila con el siguiente diseño:

  • Admite las operaciones +, -, *, /
  • Admite la entrada en notación postfija

Por ejemplo:

2 3 +
Salida:
5
¿Cómo implementarla?

Las dos cuestiones más clave son:

1.Cómo tokenizar

2.Cómo implementar la pila

1. Cómo tokenizar

Primero definimos la entrada como una cadena separada por espacios; así podemos dividir cada token con istringstream. El marco básico es:

std::istringstream iss(expression);
std::string token;
while (iss >> token) {
}

2. Cómo implementar la pila

Para una calculadora, lo más esencial es apilar y desapilar.

  • Al encontrar un número, se apila
  • Al encontrar un operador, se desapila y se calcula

Con esto ya podemos escribir el marco:

if (isNumber(token)) {
  pushNumber(token);
} else if (isOperator(token)) {
  popAndCal(token);
} else {
  throw std::runtime_error("Invalid token in expression.");
}

popAndCal es el núcleo del cálculo, por ejemplo:

void popAndCal(const std::string& token) {
  if (operandStack.size() < 2) {
    throw std::runtime_error("Invalid expression.");
  } else {
    double operand2 = operandStack.top();
    operandStack.pop();
    double operand1 = operandStack.top();
    operandStack.pop();
    double result = performOperation(operand1, operand2, token);
    operandStack.push(result);
  }
}

De este modo, en la pila queda almacenado el resultado que buscábamos y basta con devolver top al final.

¿No es sencillísimo? Te invito a discutirlo conmigo.

Temas relacionados

Comentarios