Ú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:
Saída: 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:
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.");
}
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);
}
}
Simples, não? Seja bem-vindo para discutir comigo.
Tópicos relacionados¶
- Escrevendo C++ FnOnce à mão | C++那些事
- Pequeno projeto de gRPC em C++ | C++那些事
- Comunicação entre processos em C++ na prática | C++那些事
- Demo de serviço de URL curta em C++ | C++那些事
- C++17 e SQLite para medir o tamanho de diretórios | C++那些事
- Testes de performance com Google Benchmark | C++那些事
- Servidor HTTP com corrotinas do C++20 | C++那些事
- Serialização ZeroCopy com Protobuf | C++那些事
- Acelerando Python com pybind11 | C++那些事