数据结构课程设计--中缀算术表达式求值

数据结构课程设计--中缀算术表达式求值

ID:35626608

大小:549.00 KB

页数:15页

时间:2019-04-03

数据结构课程设计--中缀算术表达式求值_第1页
数据结构课程设计--中缀算术表达式求值_第2页
数据结构课程设计--中缀算术表达式求值_第3页
数据结构课程设计--中缀算术表达式求值_第4页
数据结构课程设计--中缀算术表达式求值_第5页
数据结构课程设计--中缀算术表达式求值_第6页
数据结构课程设计--中缀算术表达式求值_第7页
数据结构课程设计--中缀算术表达式求值_第8页
数据结构课程设计--中缀算术表达式求值_第9页
数据结构课程设计--中缀算术表达式求值_第10页
资源描述:

《数据结构课程设计--中缀算术表达式求值》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计报告课程名称课题名称专业班级学号姓名指导教师2012年7月6日湖南工程学院课程设计任务书课程名称数据结构课题中缀算术表达式求值专业班级学生姓名学号指导老师审批任务书下达日期2012年7月1日任务完成日期2012年7月6日1.考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分:(1)平时出勤(占10%)(2)系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)(3)程序能否

2、完整、准确地运行,个人能否独立、熟练地调试程序(占40%)(4)设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。(5)独立完成情况(占10%)。2.课程验收要求(1)运行所设计的系统。(2)回答有关问题。(3)提交课程设计报告。(4)提交软盘(源程序、设计报告文档)。(5)依内容的创新程度,完善程序情况及对程序讲解情况打分。3.进度安排第20周:星期一8:00——12:00上课星期一14:30——18:30上机星期二14:30——18:30上机星期三8:00——12:00上机附:课程设计报告装订顺序:封面、任务书、目

3、录、正文、评分表、附件(A4大小的图纸及程序清单)。正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。1.1设计内容课题三:中缀算术表达式求值我们很早就学习如何书写及计算表达式,诸如:8+5*(7-3)之类的表达式,先算括号内的7减去3,得到4,然后再算5乘以4,

4、得到20,再计算8加上20,得到28,因此该表达式的值为28。这是人们熟悉的运算规则额:有括号先算括号内;无括号时,先做乘除法,后做加减法;对于相同级别的运算按从左到右的次序运算。而计算机是如何实现表达式的计算的呢?应用栈的相关知识,编程序实现之。设计思路:从键盘输入中缀表达式,然后将中缀表达式转换为后缀表达式,利用后缀表达式求值。要求以字符序列的形式从终端输入语法正确的、不含变量的整数表达式,利用给定的算术符优先关系,实现对算数四则混合运算表达式的求值,并演示在求值过程中运算符栈、操作符栈、输入字符和主要操作的变化过程。1.2需求分析a.程序的功能。

5、该程序能够对任意的四则运算表达式进行中缀表达式向后缀表达式的转换,并得出其计算结果。b.输入输出的要求。输入输出均是阿拉伯数字和四则运算操作符以及括号运算符,按照程序所给提示进行标准输入输出即可。1.3概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。根据问题描述和要求,系统要求能够正确求出算术表达式的值。在进行算术表达式求值过程中,考虑到我们输入的是中缀表达式,采用后缀表达式比较容易计算,因此先将中缀表达式转换成后

6、缀表达式。程序应该具有:“将算术表达式转化为后缀表达式”、“利用后缀表达式求值”等基本模块。由于有优先级的问题,根据优先级不同的运算符运算的次序是不同的,因此更具其优先级的大小抽象的将其定义为不同的大小。本程序的数据结构为栈。程序的主要模块可以分为运算符栈,操作数栈,以及各类函数。1.4详细设计a.采用C语言定义相关的数据类型。b.写出各模块的类C码算法。c.画出各函数的调用关系图、主要函数的流程图。1.4.1数据类型定义表达式求值中运算符对应优先级的定义struct{charch;intpri;}lpri[7]={{'=',0},{'(',1},{'

7、*',5},{'/',5},{'+',3},{'-',3},{')',6}},rpri[7]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};//运算符优先级的定义1.4.2将中缀表达式转换成后缀表达式先初始化栈,然后将‘=’进栈,从exp中读取字符,若它为数字则一次存入postexp中,并以空格标志结束。若为运算符,则和栈顶运算符比较,如果栈顶运算符优先级低则该运算符进栈。待字符串exp扫描完毕,则将运算符栈中‘=’之前所有运算符出栈并存放带postexp中,最后得到后缀表达式pos

8、texp。voidtrans(char*exp,charpostexp[])//将算术表达式e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。