语言课程设计实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

学生姓名:

学生学号:

实验起至日期:

指导教师:

科学计算器实验报告内容

一.实验目的与要求

1、要求实现具有加,减,乘,除基本四则运算功能

2、要求能包含操作数(整形、浮点数)、操作符、优先级,实现基于括号的优先级控制

3、设计基于MFC框架的,具有友好界面的Windows应用程序

4、科学计算器要求具有科学函数计算功能,主要包括三角函数,根号等,如算式有错误提示和处理算式越复杂,得分越高。

二.设计思路(包括算法基本流程设计,程序接口设计)

1、获取用户通过键盘或者界面输入的表达式,记为总表达式

2、将总表达式中的所有常数符号代换为相应的字数字串

3、判断总表达式中括号是否匹配,如不匹配,反馈信息并则退出,否则进入步骤4)

4、找到处在总表达式最内部的括号对(按从里到外,从左到右的顺序),提取括号内的表达式,记为子表达式

5、计算子表达式中的所有单目运算符,结果正确则将计算结果转换为字符串放回子表达式,否则输出错误信息并退出

6、计算子表达式中的所有双目运算符,结果正确则将计算结果转换为字符串放回子表达式,否则输出错误信息并退出

7、将子表达式的计算结果转换为字符串插入总表达式

8、判断当前总表达式是否为纯数值,如果不是纯数值则返回步骤4),否则将结果转换为字符串

9、输出字符串结果

另:本计算器可以算多个括号,但是不能算括号里嵌套括号的算式。在开方sqrt,倒数1/x和三角函数sin,cos,tan,cot计算时,如果需要计算一个算式的这些值,要加括号来实现。除了AC清除以外,还加了一个Backspace来删除前面一个输入的值,方便操作。

三.实验中遇到的问题现象与具体解决步骤

问题1:不知道如何实现小数点的功能

解决方法:在拆开运算符和操作数的时候,增加一个变量,就可以同时完成进位和小数,网上可以搜到很多类似的代码,可以借鉴。

问题2:原本想以自然的方式来实现开方,三角函数的功能,就是按这些按钮,然后就可以读入跟在他后面的数字,写好代码以后没有反应。

解决方法:参考windows自带的计算器,发现要先输入要计算的算式或者数字,再点函数的按键,传给这些函数参数,就修改了代码,实现变的容易多了。

问题3:一开始接触MFC计算器,根本无从下手,没有任何头绪,很多借来的书也看不懂。

解决方法:先建好界面,然后逐个按钮添加代码,有些代码通过看书上的例子以及上网搜索都可以得到。然后再与同学一起交流讨论,逐渐理清自己的思路,才开始做得比较顺利。

四.基本界面与操作方法说明

1.数字,小数点,括号,+,-,*,/,按键只要按下,就会直接显示在编辑框里,按下等于,就可在编辑框里得到的结果。

2.Backspace用来删除输入错误的单个字符,AC清空整个对话框为0。

3.计算开方,三角函数、倒数的时候,先输入要进行开方,自然对数,三角函数的数值或者算式(算式前后一定要加括号),然后再按相应按键,不需要按等于,即可得到结果,如果后面还有要算的式子,可以在得到结果后继续输入。

4.该计算器还实现了报错功能,比如输入式子不正确,会弹出提示报错消息框,还考虑到了除数为0等情况。

5.在做完后为了独特美观,还自己做了图标。

五.参考书目

1、《Visual C++.NET编程实例》苏峰黄金双汤蕾编著清华大学出版社

2、《C++技术内幕第四版》潘爱民译清华大学出版社

3、

4、微软计算器

模板实现矩阵基本运算实验报告内容

一.实验目的与要求

1.实现矩阵的“加”、“减”、“乘”、“转置”;

2.内存动态分配并用随机数填充;

3.注意“加”、“减”、“乘”要进行条件的判断;

4.进行int,double的选择;

二.设计思路(包括算法基本流程设计,程序接口设计)

1、用户输入行列数,并进行类型选择。

2、随机生成矩阵。

3、选择操作类型,转置只需要一个矩阵即可。其他操作需再生成一个矩阵。

4、如果矩阵不能进行运算(行列数不等等情况),利用try-catch语句弹出“Error!”的提示消息框。

三.实验中遇到的问题现象与具体解决步骤

问题1:没有想到合适的变量保存矩阵

解决方法:类模板成员变量中声明T **matrix,即指向指针的指针,可以动态的保存矩阵。

问题2:用随机数产生矩阵的时候用rand(),发现每次运行程序产生的矩阵是相同的,就是产生的伪随机数。

解决方法:利用srand()函数,向里面传参数time(0),得到真正的随机矩阵。

问题3:不知道如何通过一个按钮产生矩阵到edit框里。

解决方法:直接在操作符的那些按钮上加代码,使得点击之后直接在result那个框里显示,减少麻烦。

问题4:矩阵输出的时候不是按行和列,只是一长串空格间隔的数字。

解决方法:老师上课演示时讲到“\r\n”语句可以换行,并且把edit框的属性需要设置成多行显示。

问题5:后来发现最简单的可以用类模板实现一系列加减乘等操作,但当时矩阵已经做完,于是又做了一个简单的,体验一下类模板。发现确实用类模板比较方便

解决方法:先建立一个矩阵的模板类,里面重载运算符+,-,*,实现矩阵的加减乘基本运算并判断加减乘的条件把自己定义的模板类Myjz.h加到juzhengDlg中,就可以运用这个模板类。以下以加法为例展示一下

四.基本界面与操作方法说明

该程序共分成三个功能框,矩阵1,矩阵2和最后的运算结果。

在矩阵1下面的框内输入行数row和列数column以及点击要产生的矩阵类型,再点击“随机矩阵生成”即可,矩阵2操作方法类似。

要进行的运算都在中间的功能框中,计算加减乘时,输入矩阵1和2,然后点

相关文档
最新文档