数学表达式求值(第二版)

在第一版的数学表达式求值程序中,仅实现了对整数的基本数学操作,包括+、-、*、/、(和)。主要的实现方式是利用队列、栈和优先级关系表来进行数学表达式的计算。第二版主要是想加一些常用的数学函数进去,以便在数学表达式中可以使用函数。
实现的方式是新加了一种类型,也就是function类型,现在总共有操作符、操作数和函数三种类型。对数学表达式进行解析时,token中除了保存数字之外,还可以保存函数名称,将token中保存的函数名称与程序支持的函数名称比较,如果是支持的函数,则保存函数的索引。
除此之外,最重要的是设置函数的操作优先级,在数学表达式中,所有的函数应该都处于相同的优先级,他比括号的优先级低,但是比其他操作符的优先级要高,如果是多个函数调用的话,则应该是从左到右依次进行计算。
目前函数仅支持一元函数调用,包括:"sin","cos","tan","round","ceil","floor","abs"
下面是函数调用的一个例子:
具体的代码放在下面的链接中,名称为MathCalculateV2.zip:
目前程序的问题:
1)不能识别负数
2)不能识别小数
3)对错误的数学表达式无法响应
4)仅支持有限的一元函数
5)对嵌套函数的计算有时候会出错
 
以后会逐步改正这些问题。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值