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了很多内存,都没有释放,会编写一个内存跟踪器,查看一下当前内存泄漏的状态,然后再去解决这些内存泄漏,通过智能指针和指针容器来解决内存泄漏的问题