花了几个月时间断断续续的终于将这个有一千多行代码的程序写完了,这个计算器可能用 set 命令自定义变量,也可以用 view 今天查看变量的值,在程序里有一个设置小数显示数度的全局变量 prec 可以用 set 对它重新赋值,值的范围是 0 - 100 的整数,默认是 6 ,将 sin arcsin tan ln 等数学函数转换成内部表示,以便于将之与一般的运算符统一处理。程序还对小数和整数加以了区别,增加了求余去处符 ‘/’、百分符‘%’。功能还算比较完善。
程序主要采用了链表、栈等常用数据结构,其中链表用来将表达式字符串格式化为一连串的项和实现对常量、自定义变量的存储;栈用以实现程序的核心问题--计算。程序主要分为三大部分:输入与命令解释、输出与命令执行和表达式计算。主程序如下:
int main ()
{
logo (); //输出程序的说明
while (true) {
Input (); //输入与命令解释
Output (); //输出与命令执行
}
return 0;
}
程序的主程序很简单,将计算模块封装成一个没有参数的函数:void Calculator (void); 它从全局变量 expString 获得表达式字符串,进行一系列的分析处理后,得到一个标准表达式(一个表达式链表)。然后交由只进行计算的模块:void Calculate (void); 进行计算。
至于输入与输出两部分由于技术还不成熟,只能提及一下,命令解释的主要思想想先将字符串格式化为至多有三个参数的命令行,与命令列表进行逐一匹配,如果解释成功就利用全局变量产生相应的信息,传递给命令执行函数;命令执行函数根据命令解释的信息决定是否调用计算模块 Calculator (); 控制是否显示结果等等。
程序还有一个比较完善的地方就是有比较全面的错误报告机制,能对大多数出现的错误进行准确的报告,错误报告机制的主要思想是通过全局错误标志变量 error ,在出现错误的地方将 error 赋予不同值,最后在输出与命令执行部分对错误进行报告,没有错误用 error = NULL; 表示。
由于程序比较长,这里不方便直接给出,所有程序全部放在附件里。
相关文章
- 输入5个学生3门课的成绩,编写程序统计并输出每个平均分, 每门课程的平均分,找出所有15个分数中最高的分数所对应的学生和课程。要求分别用函数实现下列功能:1)输入所有学生的每门课成绩2)计算并
- 输入5 个学生的数学、语文、英语 3 门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩。
- 台式计算机运行慢怎么样能提高速度,怎么样提高计算机的运行速度
- R语言学习笔记(二十二):字符串处理中的函数对比(代码实现)
- 计算x的n次方(用函数)
- 面试必考真题-算法篇:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
- Matlab中FFT函数的源代码示例
- python取绝对值数组_Python通用函数实现数组计算的方法
- 用java编写奖金税率_企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%_java企业利润提成计算代码...
- 【VUE2】vue中render函数 渲染html代码的三种方式