简单的数值表达式求解器

Simple numerical expression solver

本文关键字:表达式 简单      更新时间:2023-10-16

首先,对不起,我的英语不好。

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

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

提前谢谢。

暂时

忘记二叉树。

您需要将表达式转换为反向抛光表示法。在转换过程中,您正在构建一个二叉树!

[

反向抛光符号][2]

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

您需要将其转换为反向抛光符号,转换的算法有点复杂,但许多网站详细介绍了确切的步骤。做多位数的数字会使它稍微复杂一些。

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