这是我的 C++ 作业的一部分。我需要在项目中编写三个函数。当我开始工作时,我发现了一个巨大的问题,第一个函数。
首先,程序是这样的:
- 打开后缀表达式文件
- 使用 getline 逐行读取(每一行都是一个表达式)
- 逐步评估表达式
我知道我需要调用函数来知道下一个操作数,然后计算中间结果。该nextOperand
函数返回从输入字符串的索引 I 开始的下一个操作数(数据类型:double)的值。
这就是我现在所拥有的:
double nextOperand(const string& expr, int& i)
{
// You can make use of the function stod(string) string-to-double,
// and the function substring() to extract an operand from the expression:
// Example:
// string myExpression = "1.5 2.3 +";
// int pos = 0;
// int len = 3;
// string opderand = myExpression.substr(pos, len);
// double value = stod(opderand);
stack<char> temp;
string temp1;
while(expr[i] != ' ' && !isOperator(expr[i]))
{
temp.push(expr[i]);
i++;
}
while(!temp.empty())
{
temp1 = temp.top() + temp1;
temp.pop();
}
if(temp1 != "\0")
{
double value = stod(temp1);
return value;
}
else
return 0;
}
评估后缀和前缀表达式的函数尚未编程。我希望先完成此nextOperand
功能才能继续。