算术表达式求值.docx

上传人:lao****ou 文档编号:22828 上传时间:2022-10-14 格式:DOCX 页数:42 大小:98.97KB
下载 相关 举报
算术表达式求值.docx_第1页
第1页 / 共42页
算术表达式求值.docx_第2页
第2页 / 共42页
算术表达式求值.docx_第3页
第3页 / 共42页
算术表达式求值.docx_第4页
第4页 / 共42页
算术表达式求值.docx_第5页
第5页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《算术表达式求值.docx》由会员分享,可在线阅读,更多相关《算术表达式求值.docx(42页珍藏版)》请在第一文库网上搜索。

1、数据结构课程设计说明书题目算术表达式求值学号姓名指导教师日期内蒙古科技大学课程设计任务书课程名称数据结构课程设计设计题目算术表达式求值指导教师时间2013年秋学期第15周至第19周一、教学要求1 .掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2 .初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3 .提高综合运用所学的理论知识和方法独立分析和解决问题的能力4 .训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。算术表达式

2、求值以字符串表示算术表达式,在此基础上借助栈完成对表达式的转换和求值操作。要求设计类(或类模板)来描述算术表达式及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:输入算术表达式(中缀表示)中缀表达式转换为后缀表达式输出表达式对后缀表达式求值并设计主函数测试该类。三、设计要求及成果1 .分析课程设计题目的要求2 .写出详细设计说明3 .编写程序代码,调试程序使其能正确运行4 .设计完成的软件要便于操作和使用5 .设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1 .根据平时上

3、机考勤、表现和进度,教师将每天点名和检查2 .根据课程设计完成情况,必须有可运行的软件。3 .根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4 .根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1 .数据结构 (C语言版)严蔚敏、吴伟民主编 清华大学出版社2004.112 .数据结构课程设计案例精编(用C/C+描述),李建学 等编著,清华大学出版社2007. 23 .数据结构:用面向对象方法与C+语言描述,殷人昆主编,清华大学出版社2007. 6目录第1章需求分析51.1 题目描述51.2 设计需求分析51.3 详细分析5第

4、2章总体设计2.12.2J程序的主要功能2.2.1 中缀表达式转化成后缀表达式2.2.2 后缀表达式求值2.3第3章抽象数据类型定义3.1链表栈的抽象数据类型的设计.第4章详细设计4.1 工程视图4.2 类图视图4.3 函数的调用关系4.4 主程序流程图4.5 主要算法代码第5章测试5.1算术表达式求值主界面5.2 输入中缀转化求值.5.3 按y继续输入5.4 按n退出第6章总结6.1 特色之处6.2 感想总结参考资料附录:.7.7.7.7.9.10.11.11.12.12.12.13.14.15.20.20.21.21.22.22.23.23.23.24第1章需求分析1.1 题目描述以字符串

5、表示算术表达式,在此基础上借助栈完成对表达式的转换和求值操作。要求设计类(或类模板)来描述算术表达式及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:输入算术表达式(中缀表示)中缀表达式转换为后缀表达式输出表达式对后缀表达式求值并设计主函数测试该类。1.2 设计需求分析根据题目要求,编译系统计算中缀表达式的过程分为两步:(1)将中缀表达式后缀表达式;(2)根据后缀表达式计算出表达式的值。在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。算法

6、输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/o算法输出:输出后缀表达式和后缀运算结果。算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,然后根据栈后进先出的特点不断进行入栈出栈转化成后缀表达式,然后再对后缀表达式进行相应运算。1.3 详细分析要对一个含有加减乘除四则运算的合法的算术表达式进行求值,首先,应了解算术表达式的四则运算的规则:(1)从左向右计算(2)先乘除,后加减(3)先括号内,后括号外由此可知,比如算术表达式(7+15) * (23-28

7、/4)的计算顺序,即为(7+15) * (23-28/4) =22* (23-28/4) =22* (23-7) =22*16=352其次,应明确“算符优先法”的内容:算符优先法就是根据上述四则运算规则确定的优先关系来实现对表达式的编译或解释执行的。一个简单的四则运算表达式由操作数(operand)运算符(operator)和界限符(delimiter)组成,其中操作数是正整数,运算符只含加、减、乘、除四种,界限符有左右括号和表达式起始、结束符;而且,为了统一算法的描述,将运算符和界限符通称为算符。算符集0P= +,*, /,(,),#) O根据上述3条运算规则,在具体的运算的每一步中,任意两

8、个相继出现的算符01和之间的优先关系只能是如下3中关系之一:3。2的优先级低于的。尸01的优先级等于0 201()201的优先级高于0 2下表定义了算符之间的这种优先关系。表算符之间的优先关系+*/()#+*/(*第2章总体设计2.1 任务与分析中缀输入,然后中缀表达式转化成后缀形式。后缀表达式的操作数与中缀表达式的操作数先后次序相同,只是运算符的先后次序发生了改变。因此,对中缀表达式从左到右依次进行扫描,每读到一个操作数即把它作为后缀的一部分输出;每读到一个运算符就将它和下一个运算符进行比较,根据运算符的优先级来决定它是入栈还是出栈。后缀求值,通过ASC依次辨别然后计算。2.2 程序的主要功

9、能2.2.1 中缀表达式转化成后缀表达式描述:(1)输入中缀表达式;(2)扫描中缀表达式,通过调用比较运算符优先级依次输出。代码表示:中缀转后缀void operation(vector &expl)(int mm=l;ListStack s2;通过栈正确输出运算符顺序s2.push(#1);char c;cinc;while(c !=#1)(if(JudgeType(c)if(mm=2)exp l.push_back(V);expl .push_back(c);mm=l;c=getchar();)else(switch(judgeop(s2.GetTop(),c)(case :s2.push

10、(c);c=getchar();break;case 士:s2.pop();c=getchar();break;case(char temat=s2.pop();exp l.push_back(V);exp 1 .push_back(temat);break;)mm=2;char name=s2.pop();while(name!=#)exp l.push_back(V);exp 1 .push_back(name);name=s2.pop();)2.2.2 后缀表达式求值描述:(1)设置一个指针用来遍历后缀表达式;(2)通过符号的ASC码辨别数字和运算符;(3)计算。代码表示:计算后缀表达式

11、void Result(vector &expl)(ListStack si;int mm=l;for(vector:iterator iter=expl.begin();iter!=expl.end();+iter)(if(*iter=48&*iter=57)(double num;num=(double)*iter-48;if(mm=0)(double nn=sl.pop();num=nn*10+num;sl.push(num);mm=O;else if(*iter=44)(mm=l;continue;)else if(*iter!=44&*iter48)(double re2=sl.po

12、p();double rel=sl.pop();s l.push(operate(re 1 ,re2,*iter);mm=l;)couts l.pop()endl;)2.3 总体功能设计函数主体结构与功能实现如下图2.1所示:后缀计算图2.1第3章抽象数据类型定义3.1链表栈的抽象数据类型的设计ADT描述ADT ListStack 数据对象 D: D=ai | ai ElemSet, i=l, 2, 3,n, n20数据关系:Rl= | a-,由eD, i=l, 2, 3,n约定an端为栈顶,al端为栈底基本操作:ListStack()操作结果:构造一个空栈。push(T ele)初始条件:栈

13、已存在。操作结果:插入新元素为栈顶。pop()初始条件:栈已存在且非空。操作结果:删除栈顶元素。GetTopO初始条件:栈已存在且非空。操作结果:返回栈顶。 ADT ListStack第4章详细设计4.1 工程视图一个源代码文件,截取工程文件视图,由图4.1表示国工作区算术表达式求ft: 1工程H号算术表达式求值files白白 Source Files国算术表达式求值.cpp|Ej Header Files 1LJ Resource Files图4.1工程视图4.2 类图视图这个文件包含类、存储结构及一些重要函数函数,下面用截图来说明。-5算术表达式求值classes =-tS l_istStack=- GetTopQ ListStackQ ListStackQ POPO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 技术资料 > 统计图表

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服