收藏 分享(赏)

表达式求值课程设计.doc

上传人:hskm5268 文档编号:4564081 上传时间:2019-01-02 格式:DOC 页数:16 大小:118KB
下载 相关 举报
表达式求值课程设计.doc_第1页
第1页 / 共16页
表达式求值课程设计.doc_第2页
第2页 / 共16页
表达式求值课程设计.doc_第3页
第3页 / 共16页
表达式求值课程设计.doc_第4页
第4页 / 共16页
表达式求值课程设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、宜春学院数学与计算机科学学院课 程 名 称: 数据结构 课 程 代 码: 题 目: 表达式求值 年级/专业/班: 12 嵌入班 学 生 姓 名: 李诗蒙、许鹏晖、胡鱼帅 学 号: 1231308104、1231308121 、12313081 指 导 教 师: 易战军 开 题 时 间: 2013 年 12 月 16 日完 成 时 间: 2013 年 12 月 26 日目 录摘 要 1一、引 言 1二、设计目的与任务 1三、设计方案 2四、结 论 10五、致 谢 12六、参考文献 12第 - 1 -页摘 要关键词:表达式求值实现表达式求值的功能,可以小数整数混合运算,如果表达式输入错误要提示错误

2、的原因,并且正确求出表达式的值。一、引 言程序可以实现,输入表达式的字符串,以“=”表示结束,计算并输入表达式的值,操作数可以是整数或小数,操作符有“+” , “-”, “*”, “/”, “(” ,“) ”的值。2、设计目的与任务实验目的:掌握栈的工作原理实验任务:1、实现() 、+ 、- 、*、/等运算;2、实现小数和整数混合运算;3、优先级的处理;4、能判断算术表达式是否正确(除数为 0,括号配对问题) ;5、正确计算出表达式的结果,错误的表达式说明原第 2 页3、设计方案程序框图如图所示:开始输入中缀表达式中缀表达式转换为后缀表达式表达式求值输出表达式的值结束首先输入一个字符串,对于这

3、些字符串,我们要同过一些函数对其识别,要把我们认为的数字和运算符分开来,函数实现如下:int isdigit(string s)string a9=“#“,“(“,“)“,“%“,“+“,“-“,“*“,“/“,“=“;for(int i=0;ist;string *ss=new stringst.size();strtok_f(st,ss,nn);int r=0;while(ricp(ch)op=popLstack(OPTR);an=op;n+;elseop=popLstack(OPTR);if(op=“(“)break; r+;最后对后缀表达式进行计算得到表达式的值,函数实现如下:doub

4、le reasault(string *a,int x)LinkStack port=new Linknode;InitStack(port);string Right,Left,Target;double left,right,target;第 9 页for(int i=0;ix-1;i+)if(isdigit(ai)pushLstack(port,ai);elseRight=popLstack(port);right=string_double(Right);Left=popLstack(port);left=string_double(Left);if(left = 0)printf(“

5、除数为 0,不能运算“);exit(0);switch(ai0)case +:target=left+right;Target=double_string(target);pushLstack(port,Target);break;case -:target=left-right;Target=double_string(target);pushLstack(port,Target);break;case *:target=left*right;Target=double_string(target);pushLstack(port,Target);break;case /:target=le

6、ft/right;Target=double_string(target);pushLstack(port,Target);break;case #:return target;第 10 页return target;对于判断表达式正确与否我们通过判断后缀表达式最后能否在计算来判断它的对错,而除数为零的问题我们在对两个数进行计算前对除数进行判断,如是零就不再计算。而对于带小数的数,我们在进行字符串处理时就处理好了。运算结果如下图:1、正确表达式:2、表达式为零报错:3、表达式不正确报错:第 11 页4、表达式中不是运算符报错:5、程序不完善出错:四、结 论这次课程设计让我更加了解大一学到的 C

7、 和这个学期学到的数据结构。课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力和更加了解编程思想和编程技巧。 这次课程设计让我有一个深刻的体会,那就是细节决定成败,编程最需要的是严谨,如何的严谨都不过分,往往检查了半天发现错误发生在某个括号,分号,引号,或者数据类型上。就像我在写EvalExpr()函数时,忘了指针的地址符值不用加*号,这一点小小的第 12 页错误也耽误了我几十分钟,所以说细节很重要。 程序设计时,也不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,感觉课程设计很有意思。在具体操作中这学期所学的数据结构的理论知识得到巩固,达到课程

8、设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到 C 语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机的重要作用,特别算术表达式有了深刻的理解。 这个程序是我们 3 个人完成的,同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致导致整项工作的失败。实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。而这次课程设计也正好锻炼我们这一点,这也是非常宝贵的五、致谢最后要感谢老师这一周的指导和学校能学校计算机考试时安排好机房给我们做实验六、参考文献C prime PlusC+ prime Plus殷人昆数据结构(C 语言描述) 第 13 页第 14 页课程设计任务书及成绩评定设计名称:_ _完 成 者: 1、设计的目的与要求: 2、设计进度及完成情况3、成绩评定:设计成绩: (教师填写)指导老师: (签字)二00 年 月 日

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

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报