共有回帖数 0 个
-
要写一个表达式计算器,但是很多实现用的什么栈啊,二叉树啊,递归啊,编译原理,文法之类的菜鸟表示一个词都看不懂啊,但是仍然可以很容易地实现一个表达式计算器,先来看一个典型的表达式
4*(3*(8+2))/2+3
主要问题在于怎么处理各种嵌套,还有优先级问题。
先来看一般人是怎么计算的
我们先把8+2算出来是10,并且用10替换原来的8+2 :
4*(3*(10))/2+3
再把3*(10)计算出来,并且用30替换原来的3*(10):
。。。。。。
计算机也一样,只要把最简单的可计算表达式,3-1,5+2之类的东西计算出来,然后替换原来的表达式,构成一个新表达式,再用相同的方法处理新表达式,不断进行下去,直到结果是一个数字,计算完成。
如果要支持函数,也是一样的,无论嵌套情况如何,总有最简单的算术运算或者最简单的函数运算,只要算出来并且替换就可以了。
这种方法的一个实现:https://github.com/one-point/exp_calculator
还在完善中,异常处理什么的完全没做,也不知道有没有其他bug,链接里有更详细的说明,开启过程查看,看一下效果(完全可以用函数做一些其他事,比如下面第二个式子rgb到hex转换):

楼主 2015-06-20 00:28 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知