表达式的相关函数库实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
河南工程学院《数据结构与算法》课程设计 成果报告 表达式的相关函数库实现 2014 年 12 月 29 日 题 目 表达式的相关函数库实现 考核项目 考核内容 得分 平时考核 (30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力 系统设计 (20分)分析系统的功能模块 编程调试 (20分)实现系统的各个功能模块,并完成调试 回答问题 (15分)回答老师针对课程设计提出的问题 课程设计报告撰写 (10分)严格按照规范要求完成课程设计报告 源代码 (5分)按照规范要求完成课程设计源代码的排版 总 评 成 绩 指导教师评语: 日期: 年 月 日 目 录 TOC \o 1-3 \h \z \u 1 课程设计目标与任务 1 1.1课程设计目标 1 1.2课程设计任务 1 2 分析与设计 2 2.1 题目需求分析 2 2.2 存储结构设计 2 2.3 算法描述 2 2.4 程序流程图 2 2.5 测试程序说明 2 3 程序清单 3 4 测试 4 4.1 测试数据 4 4.2 测试结果分析 4 5 总结 5 参考文献 7 附 录 8 PAGE 16 1 课程设计目标与任务 1.1 课程设计目标 数据结构课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析,总体结构设计用户界面设计,程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力培养科学的软件工作方法学生通过数据结构课程设计各方面得到锻炼: (1)能根据实际问题的具体情况结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法; (2)通过上机实习,验证自己设计的算法的正确性,学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改; (3)培养算法分析能力,分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平; (4)尽可能借助语言环境实现图形显示功能,以便将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来,获得算法的直观感受。 1.2 课程设计任务 设计一个表达式求值的程序。该程序必须可以接受包含(,),+, -,*,/,%,和^(求幂运算符a^b=a)的中缀表达式并求出结果。如果表达式正确则输出表达式的结果如果表达式非法则输出错误信息。 2 分析与设计 2.1 题目需求分析 利用栈设计一个程序,该程序能够用于表达式求值,程序能够处理以字符序列的形式输入的不含变量的实数表达式,能正确处理负数与小数,判断表达式是否语法正确,包含分母不能为零的情况。正确实现对算术四则混合运算表达式的求值,将计算中遇到的问题和结果予以输出。 2.2 存储结构设计 在计算机中,算术表达式的计算往往是通过使用栈来实现的。所以,求值程序的最主要的数据结构就是栈。本程序就是使用栈来存储输入表达式的操作符和操作数。输入的表达式是由操作数和运算符以及改变运算次序的圆括号连接而成的式子。任何一个表达式都是由操作数(OPTR)、运算符(OPND)和界限(delimiter)组成的。实现运算符优先算法时需要使用两个工作栈,一个为OPTR,用以存放运算符,另一个为OPND,用以存放操作数或运算的中间结果。首先初始化操作数栈OPTR和运算符栈OPND,并将表达式起始符“”压入运算符栈,依次读入表达式中的每个字符,若是操作数则直接进入操作数栈OPTR,若是运算符,则与运算符栈OPND的栈顶运算符进行优先权比较,并做如下处理: (1) 若栈顶运算符的优先级低于刚读入的运算符,则让刚读入的运算符进 OPTR栈。 (2) 若栈顶运算符的优先级高于刚读入的运算符,则将栈顶运算符退栈,同时接收下一个运算符,最后将运算结果推入OPND栈。 (3) 若栈顶运算符的优先级与刚读入的运算符的优先级相同,说明左右括号相遇,只需将栈顶运算符“左括号”退栈即可。当输入完一个完整的表达式之后(没有遇到最后一个是运算符输入时)程序结束。 2.3 算法描述 (1)首先是创建了一个运算符优先级表,用于比较运算符,然后创建两个栈,再设计3个指针,用于指向结点。然后是计算函数Operate的设计,它也是利用栈来实现运算。利用创建的两个栈直接对表达式进行计算。分别构建一个char类型和一个double类型的栈函数。 (2)在main函数中让用户进行输入,将用户输入的字符串进行循环、判断,并将判断后的字符串传递到新的数组中,循环结

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档