我正在尝试编写一个能够计算数学表达式的C ++应用程序。这样做我必须将中缀表达式转换为后缀表达式,然后计算值。
在我开始将中缀表达式转换为后缀表达式并计算它之前,我必须首先通过给出值来实例化x和y。我的问题是这个。如何在' expr'中搜索x和y? instantiateVariable
函数中的字符串,并在找到它时为其分配值(就像在main.cpp
中完成的那样)?
我非常确定可以使用for循环,但我应该怎么做呢?任何帮助将不胜感激。
int main()
{
Expression expr("x + y + sqrt 25 - 3");
expr.instantiateVariable('x',5);//Set x = 5
expr.instantiateVariable('y',3);//Set y = 3
/*
The output of the following statement should be:
Answer: 10
*/
cout<<"Answer: "<<expr.evaluate()<<endl;
}
在我的标题文件夹中,我有以下内容:
class Expression
{
public:
Expression(string expr);
~Expression();
void instantiateVariable(char name, int value);
int evaluate();
};
答案 0 :(得分:2)
我会选择一个天真的Shunthing-yard。原则很简单:
显然需要一些解析(准确的标记化),但这将非常简单。