- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
山东科技大学电子商务10-1算术表达式报告
数 据 结 构
课程设计报告
设计题目:
院 系: 经济管理学院
专业班级: 电子商务20-1
学生姓名: 、、
指导教师:
2012年7月日
指导教师评语
指导教师:
年 月 日 成绩评定 学 号 姓 名 任务分工 成绩 目 录
1.设计内容 1
1.1问题描述 1
1.2设计要求 1
1.3开发环境 1
1.4研究思路 1
2.设计步骤 1
2.1需求分析 1
2.2概要设计 2
2.3详细设计 3
2.4调试分析 3
2.5测试结果 4
3.设计成果展示 7
3.1用户手册 7
3.2程序运行部分截图 7
4.总结与心得体会 8
附 录 9
1.设计内容
1.1问题1.2设计要求
要求:(1)从键盘输入一个表达式;
(2)支持运算符的优先级;
(3)支持括号的嵌套;
(4)支持小数点及其负数;
(5)有差错功能,如非法字符,小数点过多(3.44.3),括号不匹配等错误。
1.3开发环境
C-free 5.0
1.4研究思路
当用户输入一个算法表达式,程序在只将表达式扫描一遍的条件下,运用一个能提取出一个数据项和一个符号项的函数,通过循环调用这个函数,并利用栈操作函数,实现对表达式的计算.对括号匹配的处理是用一个计数器变量,出现左括号加1,出现右括号减1,值为0说明括号匹配. 2.设计步骤
2.1需求分析
该程序的主要任务是,当用户输入一个算术表达式的时,该程序能计算出输入表达式的结果;如果输入的表达式有误(字符错误和逻辑错误),程序能输出算术表达式的具体错误形式。
输入形式:由用户输入一个用户认为合法并且合乎逻辑的算术表达式(输入的算数表达式并不一定正确)。
输出形式:1、用户输入的算数表达式合法且合乎逻辑,则在用户界面上输出该算数表达式的结果;2、用户输入的算术表达式有语法错误或者不合乎逻辑,则在用户界面上输出算术表达式出错及其具体错误。
2.2概要设计
(1)根据设计思路,首先是对整个程序中变量的定义,其中大致包括:
#define MAX_DATA_BIT 100
#define YES 1
#define NO 0
#define POINT_UNEXIST -15
#define MAXSIZE 100
(2)
对内容的设计,其中各主要过程的函数包括
函数 getexp这个函数的原型是:int getexp(double *data,char *); 它能够提取出表达式中的数据项和符号项,对这个函数的调用,至少能提取出一个符号项, 根据提取的项不同,其返回值从1到8有个;返回负数表示在提取的过程中有错误;对负数的处理是;除了第一项的负数外,其它的负数必须用括号括起来;????????函数 PopData , PushData , PopOprt ,PushOprt?????? 这四个函数分别实现数据入栈\出栈,操作符入栈\出栈;函数 calculat原型是: int calculat(double data1,char oprt,double data2);能对两个数据根据oprt 进行计算,计算出现错误返回负数,否则返回正数;???函数 checkgram??原型是:int checkgram(int fsitua,int lsitua);配合getexp的返回值使用,对表达式进行语法检查;????函数 priority???原型是:int priority(char cal1,char cal2);比较操作符的优先级,为了保持一致性,把\0和括号也看作操作符;????函数 char_to_double???原型:double char_to_double(char DigitString[],int markpot,int markend);将字符串转变成双精度数;函数 main
主函数:(1)调用函数clear()清空栈;
(2)调用函数getxp()提取字符;
(3)调用函数checkgram()判断字符是否合法;
(4)调用函数priority()判断运算符的优先级;
(5)调用函数calculat()计算算术表达式;
(6)如果以上均未出现错误,输出算术表达式的计算结果;如果任意一步出现错误,调用函数error()输出错误类型2.3详细设计
对子函数进行声明部分:
int is_calchar(char c); //标识运算符,不包括括号
int is_space(char c); //标识空白字符,不
您可能关注的文档
最近下载
- 论 自由 精品读本.pdf
- 医疗器械质量管理体系文件.pptx
- 金融中心施工总承包工程项目特色与观摩亮点介绍.pptx
- 小学数学六年级上册期中易错题重难点试卷含详细答案解析1524.docx
- 做自己的心理医生【26页】.pptx
- Module 4 单元整体教学设计 外研版(三起)六年级上册英语.docx
- 环球金融中心项目专项测量放线施工方案.docx
- 环球金融中心项目施工总承包工程质量创优策划.ppt
- 鼎信JB-QT-TS3200火灾报警控制器(联动型)安装使用说明书 XF2.900.029AS Ver.pdf VIP
- 中华护理学会团体标准TCNAS 21─2021解读:胰岛素皮下注射(1).pptx
文档评论(0)