- 17
- 0
- 约8.58千字
- 约 14页
- 2019-08-07 发布于江西
- 举报
安徽科技学院
计算机(信息)专业
《数据结构》课程设计
实验报告
学 院: 理学院 班 级: 网络工程103班
组 长: 郭天翔 学 号: 1887100307
成 员: 郭天翔、朱国华、孙前前
开课学期: 2011年9月10日
实验日期: 2011年12月1日
指导教师: 赵靖
实验名称:简单计算器设计
实验场所:力行楼6楼实验室
需求分析
根据计算器的功能,我们知道,就是要求输入一个算数表达式,然后由程序计算出结果并输出,当然这是最基本的,我们还可以根据实际需求对其进行功能扩展,让其不光可以计算简单的加减乘除,还可以计算包括括号在内的,考虑到实际计算中需求,还可以将指数计算、开方、阶乘等运算加入到其中。经过讨论,我们还可以做到在输入一个算式后对其进行表达式合法与否的判断,来增加程序的人性化。综上,这就要求我们的程序分为主函数、表达式判断函数、结果计算函数。
概要设计
在需求分析中,我们已对程序的功能做了大致规划,但是又怎样来实现这些功能呢?
在主函数中,只需要输入输出以及对各函数进行调用就行了,所以主函数是相对简单的,只是编写程序代码是注意代码的规范性就行了!在表达式判断中,函数接收由主函数传来的表达式的地址,然后对表达式中个字符扫描对左右括号配对即可。而计算函数有要分成两部分了,因为输入时按照一串字符串输入的,并不是数据,所以计算机并不能直接计算,而且计算牵扯到运算符的优先级问题,这是计算机不能直接处理的,因此,我们要首先把表达式转换成其能够识别计算的后缀表达式,这就有要求用一个后缀转换来实现,其次就要对这个后缀表达式计算了,我们仍用一个函数来实现。在处理运算符优先级问题时,我们按自己定义其优先级大小并用结构体进行存储,这样即方便理解,又方便加入一些运算符!
详细设计
主函数(main.cpp)
由于要输如一表达式,将此表达式存于一数组,考虑到程序可循环性,故判断输入的第一个字符是否等于“q”当输入为“q”是退出程序。当不是时,调用pipei子函数对表达式进行匹配判断,不匹配是输出提示要求再次输入。在括号匹配时,调用trans(char)将表达式进行转换成对应的后缀表达式。然后再调用函数conprdue对后缀表达式进行计算,并将结果输出。
主函数如下:
#include iostream
#includemath.h
using namespace std;
#define maxsize 100
#includePipei.cpp
#includeTrans.cpp
#includeCalcu.cpp
int main()
{
char exp[maxsize];
char postexp[maxsize]={0};
coutPlease input your exp:To quit with \q\endl;
while (scanf(%s,exp)!=EOF)
{
if (exp[0]==q)return 0;
else
if (pipei(exp))
{
trans(exp,postexp);
cout后缀表达式为: postexpendl;
cout表达式的值为: compvalue(postexp)endl;
memset(postexp,0,maxsize);
coutPlease input your exp:To quit with \q\endl;
}
else coutinput error!\nplease check your exp and input again!endl;
}
return 0;
}
流程图如图如下:
匹配函数(pipei)
本函数从主函数接收所输入的字符数组,从第一个开始对字符逐个扫描。遇到左括号时,将左括号进栈,遇到右括号时将当前栈顶元素出栈。直到所有元素扫描完成后,若栈内无元素则括号是匹配的,否则就是不匹配的。
流程图如下:
后缀表达式转换trans(数值串用数组储存并用#隔开,运算符用栈)
先按运算符的优先级设定其计算的先后顺序,用结构体储存。在表达式括号匹配的情况下,仍然从头开始扫描,栈顶元素初始为“=”,对字符串的各字符逐个扫描,遇到运算符就将其与栈顶运算符优先级进行比较,若小于栈顶运算符优先级,则将该运算符
您可能关注的文档
最近下载
- 2026年国网安全管理方案.docx VIP
- 初级消防试题及答案大全.docx VIP
- 核医学教学课件:血液和淋巴显像.ppt VIP
- 重庆市各地方周氏支族源流(1-170支族).doc VIP
- 建筑工程质量管理体系流程图.docx
- 淋巴系统核医学检查课件.ppt VIP
- (高清版)B-T 6003.1-2022 试验筛 技术要求和检验 第1部分:金属丝编织网试验筛.pdf VIP
- (已压缩)TUCST007-2020房屋建筑与市政基础设施工程施工安全风险评估技术标准.docx VIP
- 2026年国家公务员考试申论真题及参考答案(考生回忆版).docx VIP
- 部编版语文二年级上册期中常考七大重点题型专项训练.docx VIP
原创力文档

文档评论(0)