简单的数值表达式求解器

时间:2012-06-22 19:31:09

标签: c++ data-structures binary-tree

首先,抱歉我的英语不好。

对于我的算法和数据结构类的最后一个项目,我需要在C ++中创建一个简单的数值表达式求解器。它需要解决像3*12+(4-6)这样的简单表达式。我设法拆分表达式并将运算符与数字分开,但我不能再进一步了。诀窍是将操作符放在二叉树上,但我没有设法做到这一点。

程序只需要使用默认的C ++库。也许我可以建立一些基本的实现?

提前致谢。

3 个答案:

答案 0 :(得分:0)

暂时忘记二叉树。

您需要将表达式转换为reverse polish notation。在转换期间,您正在构建二叉树!

[反向抛光记谱法] [2]

答案 1 :(得分:0)

看看这个http://www.codeproject.com/KB/recipes/rwformulaparser.aspx我认为这个项目将解决你的问题 何塞米

答案 2 :(得分:0)

您需要将其转换为反向抛光表示法,转换算法有点复杂,但许多网站都详细说明了确切的步骤。做多位数会使它更复杂一些。

您需要知道的最重要的事情是,对于RPN,您必须使用堆栈,而不是二叉树。一旦方程式切换到RPN,您将把它的数字清空到堆栈中,直到您遇到一个运算符,然后您将从堆栈中取出前两个数字并对它们执行操作并将最终值放回堆栈。最后,你将在堆栈中留下一个数字,这将是你的等式的答案。