《小型计算器》word版

《小型计算器》word版

ID:22907135

大小:60.82 KB

页数:17页

时间:2018-11-01

《小型计算器》word版_第1页
《小型计算器》word版_第2页
《小型计算器》word版_第3页
《小型计算器》word版_第4页
《小型计算器》word版_第5页
资源描述:

《《小型计算器》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验报告课程名称算法与数据结构姓名何劼专业计算机科学与技术部别指导教员日期年月日17实验项目列表序号实验项目名称成绩01稀疏多项式02小型计算器0304050607080910111213141516总评成绩:教员签字:17实验报告姓名:何劼学号:专业:计算机科学与技术部别:实验地点:实验时间:2012、3、20设备编号:同组人员:指导教员签字:成绩:教员评语:一、实验名称编写模拟小型计算器功能的程序。二、实验目的1.掌握栈的应用。2.掌握“拼数”技术。3.掌握字符串处理方法。17三、实验内容和要求(1)完成对正整数的加减乘除运算,不进行错误检查。输入一个数,一个运算符和另一个数,

2、按=键和Enter键。输出计算结果。例如,输入:123+305=按Enter键后,输出计算结果。(2)完成正整数的混合四则运算,要考虑优先级,但算式中不带括号,程序不作错误检查。例如,输入:12+34*54-21/3=按Enter键后,输出计算结果。(3)完成实数的混合四则运算,不作错误检查。(4)完成带括号的混合四则运算,不作错误检查。例如,输入:12*(2+4)/5=按Enter键后,输出计算结果。(5)完成带负数,带数学函数的混合四则运算。例如,输入:-12.3+sin(0.12)=按Enter键后,输出计算结果。这一层主要练习如何处理负数和函数等“一目”运算。(6)完成带错

3、误检查的.用于任一数学表达式的计算。当检查到错误时.最好指明错误的位置和出错原因。例如,在第5个字符处少右括号、或少运算符、多运算符、数值中出现字17母等非数值字符。四、实验环境1.硬件环境:PC机2.软件环境:Windows操作系统,VC++集成开发环境五、算法设计思想题目的第一级即一个简单的整数拼数函数,所以程序主要问题是从第二级开始的。模拟人脑的进行正整数四则运算的过程,设计者发现,运算符的运算优先次序与栈的“后进先出”特点是相切合的,所以整个程序是建立在栈结构的基础之上的。但是,运算式是由数字和和运算符构成的,所以建立了一个数栈(num)一个符号栈(symb)。当扫描指针扫

4、描到数时,调用拼数函数,然后将得到的数字进入数栈;反之扫描到符号时,则需调用优先级比较函数(judge),比较符号栈顶的符号和扫描到的符号的优先级。若后者优先级大于前者,则扫描到的运算符入栈,扫描指针后移;如果栈顶元素优先级高于扫描到的函数,则调用计算函数(count)进行计算。Count函数将弹出符号栈中的栈顶元素和数栈的两个元素,然后两者进行弹出的运算符所对应的计算。得到的结果存入数栈,然后扫描指17针后移。当符号栈中的元素为空并且扫描指针指向“=”号时,输出结果。第二级运算实现。第三级只是将前一级中的拼数函数进行了补充修改,用以实现实数的拼数问题。这里就不加赘述了。第四级是要

5、求完成带括号的运算。设计者对括号进行了以下条件限制:●左括号直接入栈;●左、右括号优先级均比一般运算符(+、-、*、/、^)低;●扫描指针为右括号并且符号栈栈顶元素为左括号时,左括号出栈,扫描指针后移。通过这三条即可使得括号里面的内容先进行计算。第五级要求实现负数、sin()等一目运算。当扫描到字母时,调用转换函数(change2),将输入的字母字符串和负号转换为对应的单个字符运算符(这样便于judge函数的判断和count函数的计算)。然后根据具体运算先后次序补充judge函数优先级,补充count函数。即实现了一目运算。六、主要问题与解决方法(一)当程序刚调试完成时,整个程序代

6、码很混乱,if语句的嵌套过多。其中单单求解函数(result)长度就多达130行,使人阅读起来非常的17不方便。于是,设计者根据需要,将拼数函数、字符串转换函数、优先级比较函数和计算函数单独提取了出来,并且加上了一些必要的备注,增加了程序的可读性,便于日后查看修改。(二)实现第二级时,当第一个符号入栈时,符号栈为空,无法做优先级比较。所以设计者一开始便在符号栈的栈底填入了一个“#”,其优先级最低。输入字符串sincostan负号(-)对应运算符sctf(三)当扫描指针读取到sin的时候,实际上是读到的s、i、n单个字符,于是编写了change2函数,以实现类似于拼数函数的功能。一开

7、始设计者考虑的是用字符数组的结构,通过指针扫描的方式实现,但在实际编写过程中发现这样做过于复杂且问题太多,考虑到数学函数名较短的特点,便直接采用了条件结构if加&&符号的方式实现。对应关系如下:(四)为了方便用户连续计算,于是在主函数里面加入了选择循环的指令,使用户使用更加方便。七、实验结果程序实现了题目第一到五级的要求,运算结果保留两位小数。以下是实际运算界面的截图:17第一级第二级第三级第四级第五级第六级查错(不完全)17而对于题目的第六级,目前设计者的思路是编写

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。