欢迎来到天天文库
浏览记录
ID:35617685
大小:812.50 KB
页数:36页
时间:2019-04-02
《数据结构课程设计-算术表达式的计算》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、.数据结构课程设计报告设计题目:算术表达式的计算院系:经济管理学院专业班级:电子商务学生姓名:指导教师:2013年7月5日指导教师评语指导教师:年月日成绩评定学号姓名任务分工成绩修改程序查找资料,整理报告测试程序,书写报告目录1.设计内容11.1问题描述11.2设计要求11.3开发环境11.4研究思路12.设计步骤32.1需求分析32.2概要设计52.3详细设计72.4调试分析152.5测试结果183.设计成果展示233.1用户手册233.2程序运行部分截图234.总结与心得体会26附录29算术表达式的计算1.设计内容1.
2、1问题描述利用栈来实现当用户输入一个合法的算术表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的操作数要求在实数范围内;对于异常表达式能给出错误提示。1.2设计要求(1)从键盘输入一个表达式,如(23-(4×5.2-2.8))/5#(2)支持运算符的优先级;(3)支持括号的嵌套;(4)支持小数点及负数;(5)有查错功能,如非法字符,小数点过多(如3.44.3),括号不匹配等错误;(6)必须利用栈来实现算术表达式的计算。1.3开发环境VisualC++6.01.4研究思路基本设计思想:为了实
3、现算符优先算法。可以使用两个工作栈。一个称为OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;232算术表达式的计算.依次读入表达式,若是操作数即进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。32算术表达式的计算2.设计步骤2.1需求分析利用栈来实现当用户输入一个合法的算术表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、
4、乘、除、括号;能够计算的操作数要求在实数范围内;对于异常表达式能给出错误提示。(1)输入的形式为由数据(实数范围内)和运算符包括+,—,*,/,(),构成的算术表达式,输出结束时以#作为标志。由于本算法主要是返回算术表达式的结果,故符合要求的算术表达式输出的应该是一个实数。(2)当用户进入操作页面之后输出:请输入一个算术表达式(以#符结束);当输入的算术表达式不符合要求时输出:输入的表达式有误,请重新输入;例如:输入一个不合法的表达式:wrong*8+6/1当输入的表达式正确无误时输出一个实数(此实数即为算数表达式的结果)
5、,并出现提示语句:请选择是否继续计算(y/n)(选择之后的操作,退出或者继续输入新的算术表达式进行下面的运算);例如:输入一个合法的表达式:(56*(9+16)/2)+8#32算术表达式的计算当被除数为0的时候,输出:被除数为0,不合法;例如:(65+65)/0#(3)本程序可以实现对于由符合要求的数据以及运算符构成的算术表达式的简单运算,并且在输入超出实数范围内的不符合要求的数据和运算符时出错误提示。(4)测试数据(截图):例子:(6+(36+5)/5)+1.2#32算术表达式的计算2.2概要设计主程序中函数StStac
6、k是定义关于数值的栈,用来存储表达式的相关数值,StStack_c是定义关于字符的栈,用来存储表达式中的字符。定义的抽象数据类型有:typedefstruct/*定义一个结构体类型*/typedefstructStStack{float*base;/*在栈构造之前和销毁之后,base的值为0*/float*top;/*栈顶指针*/intsize;/*当前已分配的存储空间,以元素为单位*/}StStack;typedefstructStStack_c{char*base;char*top;intsize;}StStack_c
7、;32算术表达式的计算还需要如下函数:函数作用Push来插入元素e为新的栈顶元素Push_c用来插入元素ch为新的栈顶元素Pop判断若栈不空,则删除S的栈顶元素,用e返回其值GetTop判断若栈不空,则用e返回S的栈顶元素In_c判断是否为运算符,是则返回TRUE,否则返回FALSEcheck_ch判断输入是否符合表达式的要求operate基本运算的实现Precede判断运算符的优先权changeN将字符转换为数值DealNeg对括号内负数的处理Operating表达式运算过程~核心内容32算术表达式的计算2.3详细设计开
8、始1.程序流程图建立堆栈清空栈输入表达式输出错误类型提取字符为合法字符NY无语法错误NY操作符优先级判断计算表达式无逻辑错误NY输出结果2.函数的调用关系图32算术表达式的计算InitStack-cPush-cCheck-chMAINmainchgngeNNNPopOperatingPushGetTop
此文档下载收益归作者所有