数据结构》课程设计报告简单计算器设计

数据结构》课程设计报告简单计算器设计

ID:23256902

大小:193.51 KB

页数:14页

时间:2018-11-06

数据结构》课程设计报告简单计算器设计_第1页
数据结构》课程设计报告简单计算器设计_第2页
数据结构》课程设计报告简单计算器设计_第3页
数据结构》课程设计报告简单计算器设计_第4页
数据结构》课程设计报告简单计算器设计_第5页
资源描述:

《数据结构》课程设计报告简单计算器设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、安徽科技学院计算机(信息)专业《数据结构》课程设计实验报告学院:理学院班级:网络工程103班组长:郭天翔学号:1887100307成员:郭天翔、朱国华、孙前前开课学期:2011年9月10日实验日期:2011年12月1日指导教师:赵靖实验名称:简单计算器设计实验场所:力行楼6楼实验室一、需求分析根据计算器的功能,我们知道,就是要求输入一个算数表达式,然后由程序计算出结果并输出,当然这是最基本的,我们还可以根据实际需求对其进行功能扩展,让其不光可以计算简单的加减乘除,还可以计算包括括号在内的,考虑到实际计算中需

2、求,还可以将指数计算、开方、阶乘等运算加入到其中。经过讨论,我们还可以做到在输入一个算式后对其进行表达式合法与否的判断,来增加程序的人性化。综上,这就要求我们的程序分为主函数、表达式判断函数、结果计算函数。二、概要设计在需求分析中,我们已对程序的功能做了大致规划,但是又怎样来实现这些功能呢?在主函数中,只需要输入输出以及对各函数进行调用就行了,所以主函数是相对简单的,只是编写程序代码是注意代码的规范性就行了!在表达式判断中,函数接收由主函数传来的表达式的地址,然后对表达式中个字符扫描对左右括号配对即可。而计

3、算函数有要分成两部分了,因为输入时按照一串字符串输入的,并不是数据,所以计算机并不能直接计算,而且计算牵扯到运算符的优先级问题,这是计算机不能直接处理的,因此,我们要首先把表达式转换成其能够识别计算的后缀表达式,这就有要求用一个后缀转换来实现,其次就要对这个后缀表达式计算了,我们仍用一个函数来实现。在处理运算符优先级问题时,我们按自己定义其优先级大小并用结构体进行存储,这样即方便理解,又方便加入一些运算符!一、详细设计1、主函数(main.cpp)由于要输如一表达式,将此表达式存于一数组,考虑到程序可循环性

4、,故判断输入的第一个字符是否等于“q”当输入为“q”是退出程序。当不是时,调用pipei子函数对表达式进行匹配判断,不匹配是输出提示要求再次输入。在括号匹配时,调用trans(char)将表达式进行转换成对应的后缀表达式。然后再调用函数conprdue对后缀表达式进行计算,并将结果输出。主函数如下:#include#includeusingnamespacestd;#definemaxsize100#include"Pipei.cpp"#include"Trans.cpp

5、"#include"Calcu.cpp"intmain(){charexp[maxsize];charpostexp[maxsize]={0};cout<<"Pleaseinputyourexp:Toquitwith"q""<

6、<

7、前栈顶元素出栈。直到所有元素扫描完成后,若栈内无元素则括号是匹配的,否则就是不匹配的。流程图如下:1、后缀表达式转换trans(数值串用数组储存并用#隔开,运算符用栈)先按运算符的优先级设定其计算的先后顺序,用结构体储存。在表达式括号匹配的情况下,仍然从头开始扫描,栈顶元素初始为“=”,对字符串的各字符逐个扫描,遇到运算符就将其与栈顶运算符优先级进行比较,若小于栈顶运算符优先级,则将该运算符进栈。若相等则退栈。若大于,则退栈并将该运算符放到后缀表达式中。如果扫描到的是数字,则将其直接进栈并用“#”隔开,直到

8、最后,将栈内所有元素均放入后缀字符串poltexp中流程图如下:1、对后缀表达式进行计算compvalue(char*p)数据存储:栈,用来存储计算机过程值和结果的算法仍然是要逐个扫描分别将前两个数字转化成数值后将其进栈,当读取到运算符时,对当前栈最顶端的两个数进行该运算符的运算,并把结果放入栈顶为下次计算提供数据,直到后缀表达式扫描结束时将栈顶元素值返回。流程图如下:3.调试分析问题一:多次计算错误在代码初步编

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

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

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