(P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算

1.FunctionTable的实现和让表达式计算器支持函数运算

  • 对于一个好的科学计算器,内置函数是必需的。计算器必须能计算平方根、对数、三角函数等等。因此,我们要让解析器识别这些函数,并调用适当的数学库函数。

  • 常用数学函数
    将下面的数学函数保存在一个表格中,称之为函数表FunctionTable;
    函数表保存的是:函数指针log与函数符号"log"("log"是一个函数名称,实质上也是一个符号,也就是说这些名称要保存到符号表中,变量以及函数都算是符号,都要保存到符号表中)的对应,其他类似
    在这里插入图片描述

  • StartUML,只画新增的
    在这里插入图片描述

  • 增加一个节点,支持函数调用,增加一个函数节点FunctionNode,继承至UnaryNode,将其看成是一个一元运算节点,
    5 - 6中的负号是二元运算节点,-5 + sqrt(4),-5前面的负号是一个一元运算节点,sqrt看成是一个一元运算节点,如果sqrt(4+5),将4+5看成是一个节点
    在这里插入图片描述

  • eg:

P48\FunctionTable.h
P48\FunctionTable.cpp

P48\Calc.h

P48\Node.h
P48\Node.cpp

P48\Parser.cpp
  • 测试:
    在这里插入图片描述
    在这里插入图片描述
    可以列出变量列表,函数列表
    在这里插入图片描述
    在这里插入图片描述

  • 缺点
    (1)异常处理:用异常改进程序,让其更加可靠
    (2)内存控制:new了很多内存,都没有释放,会编写一个内存跟踪器,查看一下当前内存泄漏的状态,然后再去解决这些内存泄漏,通过智能指针和指针容器来解决内存泄漏的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值