我正在尝试用C ++实现RPN计算器。以下是该计划的重要部分。
#include <iostream>
#include <stack>
#include <cctype>
#include <string>
using namespace std;
bool isNumberString(string &str);
int main()
{
cout << "RPN Calculator Simulation" << endl;
while (true)
{
string input;
stack<double> operandStack;
double lhs, rhs, result;
cout << "> ";
getline(cin, input);
if (input == "Q" || input == "") {
return 0;
} else if (isNumberString(input)) {
operandStack.push(atof(input.c_str()));
} else if (input == "+") {
rhs = operandStack.top();
lhs = operandStack.top();
result = lhs + rhs;
operandStack.push(result);
} else {
cout << "Invalid command. Please try again." << endl;
}
}
return 0;
}
bool isNumberString(string &str)
{
if (str.length() == 0) return false;
int numberOfDots = 0;
for (size_t i = 0; i < str.length(); i++)
{
if (str[i] == '.')
{
if (++numberOfDots > 1) return false;
}
else if (!isdigit(str[i]))
{
return false;
}
}
return true;
}
运行并输入两个数字,并在命令行提示符下输入“+”时,出现“Expression:deque iterator not dereferencable”错误。
有人可以提供有关我的代码问题的建议吗?
提前致谢。
答案 0 :(得分:1)
您必须收到运行时错误
当您每次在while
循环中创建新筹码时,stack
在输入+
时没有任何内容
stack<double> operandStack;
应该在while
循环
结果也是在错误的输入上计算出来的,你需要修改一些修改逻辑的结果。