后期修复表达式解算器
Post-fix expression solver
本文关键字:表达式 更新时间:2023-10-16
目标是编写一个程序来解决修复后/反向波兰表示法表达式。这似乎是一项简单的任务,但我似乎忽略了其中的错误。提前感谢您的帮助。
vector<int> stack;
string input;
cout << "Please enter post-fix expression to be evaluated (+, -, *, /): ";
cin >> input;
for(int i=0; i<input.size(); i++)
{
if(input[i] == '+')
{
int temp1 = stack.back();
stack.pop_back();
int temp2 = stack.back();
stack.pop_back();
int sum = temp1 + temp2;
stack.push_back(sum);
}
else if(input[i] == '-')
{
int temp1 = stack.back();
stack.pop_back();
int temp2 = stack.back();
stack.pop_back();
int difference = temp1 - temp2;
stack.push_back(difference);
}
else if(input[i] == '*')
{
int temp1 = stack.back();
stack.pop_back();
int temp2 = stack.back();
stack.pop_back();
int product = temp1 * temp2;
stack.push_back(product);
}
else if(input[i] == '/')
{
int temp1 = stack.back();
stack.pop_back();
int temp2 = stack.back();
stack.pop_back();
int quotient = temp1 / temp2;
stack.push_back(quotient);
}
else
{
stack.push_back(input[i]);
}
}
cout << "Result: " << stack.back();
真正的问题是stack.push_back(input[i]);您推回一个char,例如'7',这将导致55被推到堆栈上。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 带有用户定义类的c++折叠表达式
- 即使使用调试编译标志,表达式也是"optimized out"
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 这 4 个 lambda 表达式之间有什么区别?