在数学表达式中实例化变量
Instantiating a variable in a mathematical expression
我正试图编码一个c++应用程序,将能够计算一个数学表达式。为此,必须将中缀表达式转换为后缀表达式,然后计算值。
在开始将中缀表达式转换为后缀表达式并计算它之前,我必须首先通过赋值来实例化x和y。我的问题是。我如何在instantiateVariable
函数中的"expr"字符串中搜索x和y,并将值分配给它(就像在main.cpp
中那样),当它被发现时?
我很确定可以使用for循环,但我应该怎么做呢?如有任何帮助,不胜感激。
main.cpp
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;
}
,在我的header文件夹中,我有以下内容:
Expression.h
class Expression
{
public:
Expression(string expr);
~Expression();
void instantiateVariable(char name, int value);
int evaluate();
};
我会选择朴素的Shunthing-yard。原理很简单:
- 到达每个操作数并将它们放入队列
- 每次遇到操作符就把它放到堆栈中
- 如果堆栈顶部的操作符具有更高的优先级,则将其弹出并将其添加到队列中(需要首先计算)
- 继续直到表达式结束,然后将所有内容弹出到队列
支持括号也很容易使用这个方法。
显然需要一些解析(准确地说是标记化),但这将非常简单。
相关文章:
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 是否可以将指向未实例化的对象的指针用作C++中的变量?
- 类外的静态变量实例化
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- 使用动态布尔变量实例化模板
- Google Mock:在目标类的构造函数中实例化的模拟私有变量成员
- 如何在实例化类类型的变量时打印其名称
- 实例化变量,但没有可用的定义
- 访问实例化类的变量/函数
- 如何从类内实例化的对象访问私有变量
- C++ 变量未正确实例化
- 全局变量的 C++ 后期实例化
- 类成员的C++静态成员变量实例化了两次
- 是否为类的每个实例实例化了私有类变量
- 由类中未实例化的静态成员变量引起的未定义引用C++
- 在C++中实例化带大括号与不带大括号的变量有什么区别?
- 实例化变量的 V8 顺序(多线程)
- 实例化变量的新实例
- 在数学表达式中实例化变量
- 如何在Qt中声明和实例化变量