Ir para o conteúdo

Última atualização:2026-10-12

Projeto de calculadora em pilha em C++

Escreva uma calculadora de pilha, com o seguinte projeto:

  • Suporte às operações +, -, *, /
  • Suporte à entrada em notação pós-fixada

Por exemplo:

2 3 +
Saída:
5
Como implementar?

As duas questões mais essenciais:

1.Como fazer a tokenização

2.Como implementar a pilha

1.Como fazer a tokenização

Primeiro, defina que a entrada é uma string separada por espaços; assim, já podemos usar istringstream para dividir cada token, com o framework básico:

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

2.Como implementar a pilha

Para a calculadora, o mais essencial é empilhar e desempilhar.

  • Ao encontrar um número, empilha
  • Ao encontrar um operador, desempilha e calcula

Podemos, então, escrever o framework:

if (isNumber(token)) {
  pushNumber(token);
} else if (isOperator(token)) {
  popAndCal(token);
} else {
  throw std::runtime_error("Invalid token in expression.");
}
O popAndCal é o núcleo do cálculo, como:

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);
  }
}
Assim, armazenamos na pilha o resultado que queremos e, no final, basta retornar o top.

Simples, não? Seja bem-vindo para discutir comigo.

Tópicos relacionados

Comentários