0
点赞
收藏
分享

微信扫一扫

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


文章目录

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

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

  • 对于一个好的科学计算器,内置函数是必需的。计算器必须能计算平方根、对数、三角函数等等。因此,我们要让解析器识别这些函数,并调用适当的数学库函数。
  • 常用数学函数
    将下面的数学函数保存在一个表格中,称之为函数表FunctionTable;
    函数表保存的是:函数指针log与函数符号"log"("log"是一个函数名称,实质上也是一个符号,也就是说这些名称要保存到符号表中,变量以及函数都算是符号,都要保存到符号表中)的对应,其他类似
  • (P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算_表达式计算

  • StartUML,只画新增的
  • (P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算_表达式计算_02

  • 增加一个节点,支持函数调用,增加一个函数节点FunctionNode,继承至UnaryNode,将其看成是一个一元运算节点,
    5 - 6中的负号是二元运算节点,-5 + sqrt(4),-5前面的负号是一个一元运算节点,sqrt看成是一个一元运算节点,如果sqrt(4+5),将4+5看成是一个节点
  • (P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算_符号表_03

  • eg:

P48\FunctionTable.h
P48\FunctionTable.cpp

P48\Calc.h

P48\Node.h
P48\Node.cpp

P48\Parser.cpp

  • 测试:
  • (P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算_内存泄漏_04


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

  • 可以列出变量列表,函数列表
  • (P48)面向对象版表达式计算器:FunctionTable的实现和让表达式计算器支持函数运算_内存泄漏_06


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

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


举报

相关推荐

线性栈实现中缀表达式计算器

0 条评论