首先,对不起我的英语不好。
对于我关于算法和数据结构类的最后一个项目,我需要在 C++ 中创建一个简单的数值表达式求解器。它需要解决简单的表达式,如3*12+(4-6)
. 我设法拆分表达式并将运算符与数字分开,但我不能再进一步了。诀窍是将运算符放在二叉树上,但我没有设法做到这一点。
该程序只需要使用默认的 C++ 库。也许我可以建立一些基本的实现?
提前致谢。
首先,对不起我的英语不好。
对于我关于算法和数据结构类的最后一个项目,我需要在 C++ 中创建一个简单的数值表达式求解器。它需要解决简单的表达式,如3*12+(4-6)
. 我设法拆分表达式并将运算符与数字分开,但我不能再进一步了。诀窍是将运算符放在二叉树上,但我没有设法做到这一点。
该程序只需要使用默认的 C++ 库。也许我可以建立一些基本的实现?
提前致谢。
看看这个http://www.codeproject.com/KB/recipes/rwformulaparser.aspx我认为这个项目会解决你的问题 Josemi
您需要将其转换为反向波兰符号,转换的算法有点复杂,但许多网站详细说明了确切的步骤。做多位数字会使它变得更复杂一些。
您需要知道的最重要的事情是,对于 RPN,您必须使用堆栈,而不是二叉树。等式切换到 RPN 后,您会将其数字清空到堆栈中,直到遇到运算符,然后您将从堆栈中取出前两个数字并对它们进行运算并将最终值放回堆栈中. 最后,您将在堆栈上留下一个数字,这将是您等式的答案。