很多同学大学的时候也许编写过后缀表达式求值类似的东西, 可以做四则运算等。但是也仅仅是做了求值计算而已, 并没有对整个表达式做解析, 也无法输出表达式的机构。
举个例子: 当输入为 (2+2)*3 + (4+4)^2 的时候, 你或许可以用上面说的方式求得整个算式的结果为76, 但是你无法分析出整个表达式的执行结构和顺序如下:
你也许会说, 我知道结果就行了, 这个有啥用?
要知道, 这样做以后, 表达式就可以支持未知数了。
比如我们要绘制函数 y=f(x) 在给定范围内的图像, 而这个 f(x) 由用户输入, 比如 x^2
那我们只需要很简单遍历x的给定值域范围, 求出y值绘制出一条曲线即可。
当我们求出表达式树形结构以后, 可以轻松替换掉未知数节点的值, 然后获取整个表达式的值。
如果你没有这样的信息, 那么每一个x你都要替换文本字符串重新计算后缀表达式的值, 多么愚蠢啊!
说了这么多, 直接上源代码吧: https://github.com/wysaid/simple-arithmetic
ege版本的在cpp目录下哦。
另外还有网页版: http://arithmetic.wysaid.org/ (网页版可以直接绘制公式图形哦)
近期评论