c++数据结构课程设计报告计算表达式

上传人:第*** 文档编号:38772031 上传时间:2018-05-07 格式:DOC 页数:7 大小:97KB
返回 下载 相关 举报
c++数据结构课程设计报告计算表达式_第1页
第1页 / 共7页
c++数据结构课程设计报告计算表达式_第2页
第2页 / 共7页
c++数据结构课程设计报告计算表达式_第3页
第3页 / 共7页
c++数据结构课程设计报告计算表达式_第4页
第4页 / 共7页
c++数据结构课程设计报告计算表达式_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《c++数据结构课程设计报告计算表达式》由会员分享,可在线阅读,更多相关《c++数据结构课程设计报告计算表达式(7页珍藏版)》请在金锄头文库上搜索。

1、1 1 1题目:计算表达式的值题目:计算表达式的值1、问题描述、问题描述对于给定的一个表达式,表达式中可以包括常数、算术运行符(“+” 、 “-” 、“*” 、 “/” )和括号,编写程序计算表达式的值。基本要求:从键盘输入一个正确的中缀表达式,将中缀表达式转换为对应的后缀表达式,计算后缀表达式的值。提高要求:(1)对于表达式中的简单错误,能够给出提示;(2)不仅提示错误,也能给出错误信息(3)表达式中可以包括单个字母表示的变量(4)能够处理多种操作符(5)实现包含简单运算的计算器(6)实现一个包含简单运算和函数运算的计算器。2需求分析需求分析软件的基本功能:由键盘输入中缀表达式,程序可以将输

2、入的中缀表达式转换成对应的后缀表达式,并计算后缀表达式的值。对于在输入时发生的简单错误,程序可以给出提示。本程序支持整数、小数、多种操作数的处理,可以计算含加、减、乘、除、运算符的表达式,并能判断表达式括号是否匹配。输入/输出形式:用户可以通过控制台,根据输入提示。输入形式:正确的不含字母变量的中缀表达式;含有简单错误的中缀表达式。输出形式:对于正确的中缀表达式,可以输出其转化后的后缀表达式及表达式的计算结果;对于含有简单错误的中缀表达式,程序将自动输出错误提示,并给出错误信息。测试数据要求:用户可以输入一个符合要求的中缀表达式,也可以输入一个包含简单错误的表达式。表达式中可以包括各种类型的常

3、数以及小数等,操作符包括(+、-、*、/) ,同时表达式还可以包括各种括号。2 2 23概要设计概要设计(1 1)抽象数据类型)抽象数据类型:根据题目的要求,考虑用栈类型比较适合。ADT SeqStackData栈中元素具有相同类型及后进先出特性,相邻元素具有前驱和后继关系OperationSeqStack前置条件:栈不存在输入:无功能:栈的初始化输出:无后置条件:构造一个空栈 SeqStack前置条件:栈已存在输入:无功能:销毁栈输出:无后置条件:释放栈所占用的存储空间Push前置条件:栈已存在输入:元素值 能:在栈顶插入一个元素 x输出:如果插入不成功,抛出异常后置条件:如果插入成功,栈顶

4、增加了一个元素Pop前置条件:栈已存在输入:无功能:删除栈顶元素3 3 3输出:如果删除成功,返回被删元素值,否则,抛出异常后置条件:如果删除成功,栈顶减少了一个元素GetTop前置条件:栈已存在输入:无功能:读取当前的栈顶元素输出:若栈不空,返回当前的栈顶元素值后置条件:栈不变Empty前置条件:栈已存在输入:无功能:判断栈是否为空输出:如果栈为空,返回 1;否则,返回 0后置条件:栈不变End ADT4详细设计详细设计(1)实现概要设计的数据类型:)实现概要设计的数据类型:采用顺序栈const int StackSize = 50;template /定义模板类 SeqStackclass

5、 SeqStackpublic:SeqStack(); /构造函数,栈的初始化SeqStack(); /析构函数void Push(T x); /将元素 x 入栈DataType Pop(); /将栈顶元素弹出DataType GetTop(); /取栈顶元素(并不删除)4 4 4int Empty(); /判断栈是否为空private:DataType dataStackSize; /存放栈元素的数组int top; /栈顶元素;(2)主程序以及其它模块的算法描述:)主程序以及其它模块的算法描述:这个函数主要调用了实现功能的各个函数。其步骤为:在用户没有选择退出时,先调用输入函数,输入中缀表

6、达式;然后调用判断表达式,如果中缀表达式错误,则根据返回的值来输出错误提示,不再往下运算;如果中缀表达式正确,则将中缀表达式转换为后缀表达式,然后输出中缀表达式和转换后的后缀表达式;接着,再调用计算函数,计算后缀表达式的结果输出。最后是清屏函数。直至用户选择退出。5、编码与调试分析、编码与调试分析编码与调试过程中遇到的问题及解决办法编码与调试过程中遇到的问题及解决办法:【问题 1】程序在判断表达式输入形式有误时,考虑情况不周全。解决办法:尽可能多的将表达式有误的情况考虑在内。以下为现已考虑到并解决的问题:表达式中出现非数字或非运算符的其他字符; 表达式中括号不匹配。【问题 2】给变量赋值时出现

7、重定义问题。解决办法:在定义暂存栈顶元素的变量 t 时,应该在函数外面定义,在函数里面给变量赋值时不能定义。【问题 3】无法处理多位数和小数。解决办法:在连续的操作数结束之后插入空格到后缀表达式中,以分隔操作数。解决此问题的核心代码:int i,t=0;float sum=0;for(i=0;i 。 其功能是: 把字符串转换成浮点数。具体的函数说明是: atof()会扫描参数 nptr 字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(0)才结束转换,并将结果返回。参数字符串可包含正负号、小数点或 E(e)来表示指数部分。返回值是转换后的浮点型数。7

8、 7 7自学 MFC。还有一个知识点是清屏函数,它也是包含于头文件中的,使用形式为 system(“CLS“)。主要功能就是清空屏幕。9、课程设计心得体会、课程设计心得体会通过这次课程设计,增强了我的自信心。因为在这次课程设计中,我遇到了一些问题,但是都逐个得解决了,虽然有些问题请教了同学,但是从中学了很多东西,也学到了一些处理问题的方法。在能力上得到了一些提升。同时也养成了独立思考问题,以及和同学一起探索问题的良好习惯。当然,在课程设计过程中,有些细节的处理还是不够完美,需要完善的地方还有很多,还需要继续努力,尽量将程序完善。在编写程序过程中,得到了部分同学的帮助,如:数据间的分隔问题,得到了*同学的帮助,将中缀表达式转换为后缀表达式的算法思想参考了数据结构课程设计 (机械工业出版社) ,然后根据自己的理解,完成基本算法和细节处理,最后完成了转换函数的代码编写。在将字符串转换为浮点型数字进行运算的思想主要参考了程序设计引导及在线实践这本书里面的一道程序,然后加以灵活运用,转换为自己的代码。当然,为此也掌握了一些新的知识。清屏函数是在百度百科上获取的知识,也属于自学的新知识。参考书 1c+面向对象程序设计 清华大学出版社 谭浩强著2数据结构(C+版) 清华大学出版社 王红梅、胡明、王涛著

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号