没有合适的资源?快使用搜索试试~ 我知道了~
模拟计算器程序_课程设计报告书.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 123 浏览量
2021-10-04
21:05:34
上传
评论
收藏 366KB DOC 举报
温馨提示
试读
21页
模拟计算器程序_课程设计报告书.doc
资源推荐
资源详情
资源评论
模拟计算器
学生:**** 指导****
摘 要 本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计
算,并且表达式中可以包含 Abs()和 Sqrt()运算。在课程设计中,系统开发平
台为 Windows ,程序设计设计语言采用 C++,程序运行平台为 Windows 或
*nix。本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入
的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了
对输入的表达式(表达式可以包含浮点数并且 Abs()和 Sqrt()中可以嵌套子表
达式)进行判定表达式是否合法并且求出表达式的值的功能。经过一系列的调
试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级
数据都能够通过计算机运算快速解决。
关键词 C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达
式;字符串处理;表达式合法判定;
1 / 21
目 录
1 引 言.................................................................................................................................................2
1.1 课程设计目的.......................................................................................................................3
1.2 课程设计容...........................................................................................................................3
2 设计思路与方案..............................................................................................................................4
3 详细实现..........................................................................................................................................5
3.1 表达式的合法判定...............................................................................................................5
3.2 中缀表达式转化为后缀表达式...........................................................................................6
3.3 处理后缀表达式...................................................................................................................7
3.4 表达式嵌套处理...................................................................................................................8
4 运行环境与结果..............................................................................................................................9
4.1 运行环境...............................................................................................................................9
4.2 运行结果...............................................................................................................................9
5 结束语............................................................................................................................................12
参考文献...........................................................................................................................................13
附录 1:模拟计算器源程序清单....................................................................................................14
1 引 言
2 / 21
本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,
通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定
用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表
达式的转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈”,一个
“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表
达式来求解表达式的值。该算法的复杂度为 O(n),能够高效、快速地求解表达
式的值,提高用户的效率。
1.1 课程设计目的
数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中
所出现的计算机操作对象以与它们之间的关系和操作的学科。数据结构是介于
数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算
机程序设计、数据库、操作系统、编译原理与人工智能等的重要基础,广泛的
应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉与
的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的
思维能力,促进学生的综合应用能力和专业素质的提高。
模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表
达式,并且运用了递归的思想来解决 Abs()和 Sqrt()中嵌套表达式的问题,其
中还有一些统计的思想来判定表达式是否合法的算法。
1.2 课程设计容
本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别
按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表
达式。2 判定表达式是否合法。3 把中缀表达式转化为后缀表达式。4 求出后
缀表达式的结果。5 输出表达式的结果。通过设计该程序,从而做到方便的求
出一个表达式的值,而不需要一步一步进行运算。
3 / 21
2 设计思路与方案
本课程设计需要考虑许多的问题,首先是表达式的合法判断,然后是字符
串表达式提取分离的问题,核心部分就是中缀表达式转化为后缀表达式。对于
第一个问题,我是分步来判断,首先表达式中是否含有其它非法字符,然后判
断括号是否合法,接着判断运算法两边是否合法,比如除法时,除数不能为零。
对于第二个问题,我是直接转换的,从左到右遍历中缀表达式,把数据全部取
出来。对于核心问题,利用了“栈”这种“后进先出”的数据结构,利用两个“栈”,
一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后
缀表达式来求解表达式的值。
上面是数据处理的算法部分。本程序用户界面总共分为 3 个模块,分别是
操作提示,数据输入,数据输出。如图 2.1 所示。
图 2.1 用户界面
除了实现基本的功能外,我还增加了其它一些功能,比如支持输入数据为
浮点数,更重要的是本程序还支持表达式的嵌套运算,例如:A(1+2*S(2))我
的实现方法是利用函数的递归调用来解决此问题,即把 1+2*S(2)看成一个子
表达式,这个子表达式中 2 也看成子表达式。这样使得程序的适用围更加的广
泛,适应性更强,能支持更复杂的表达式的运算。这也是本程序的优点之一。
4 / 21
剩余20页未读,继续阅读
资源评论
huayuya123
- 粉丝: 26
- 资源: 31万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功