《带括号算术表达式的计算》实验报告.docx

《带括号算术表达式的计算》实验报告.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《带括号算术表达式的计算》实验报告

四川大学数据结构与算法分析实验报告实验名称:带括号的算术表达式求值指导老师 :________孙界平________学院:_______软件学院_______专业:_______软件工程_______姓名:________马 健________学号:_____2013141463026____班级:________5 班________日期:___2014年10月24日___目录一、实验题目:带括号的算术表达式求值二、实验目的和要求:采用算符优先数算法,能正确求值表达式;熟练掌握栈的应用;熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C程序;上机调试程序,掌握查错、排错使程序能正确运行。三、实验的环境:硬件环境:联想笔记本电脑软件环境:操作系统:windows 7 旗舰版编译软件:Visual C++ 6.0四、算法描述:程序框图判断表达式是否正确文字解释:用户从键盘读入算术中缀表达式,以”=”结尾;程序判断用户输入表达式是否正确;若表达式正确,则用栈计算算术表达式;打印输出计算过程和最终结果;程序询问用户是否继续计算;若继续,则执行第1步;若否定,则退出程序若表达式错误,则打印错误信息,提示用户重新输入返回第1步;函数及结构说明:结构体:1) 存储算数表达式的单链表:struct Expression{char sign;struct Expression *next;};2) 操作符和操作数栈:typedef struct{char *top;char *bottom;int stack_size;}Stack;构造函数:1) 栈相关操作函数:①初始化空栈int StackCreate(Stack *s);②入栈操作int PUSH(Stack *s, char c);③出栈操作int POP(Stack *s, char c);④获取栈顶元素char GetTop(Stack *s);2) 计算相关操作函数:①利用栈计算算术表达式int Calculate(struct Expression *exp);②子式的值的计算int Count(char num1, char sign, char num2);③判断字符是否为运算符int IsOpOrNum(char c);④判断运算符优先级char JudgeLevel(char c1, char c2);⑤判断表达式正确性int IsExpresiion(struct Expression *exp);⑥输出计算结果void PrintResult(struct Expression *exp,int result);3) 算术表达式输入函数:①键盘读入存于单链表struct Expression *GetExp();符号2构造操作符优先级表符号1比较+-*/()=(#)+-*/(=)=(#)=五、源程序清单见附录六、运行结果测试表本次测试采用用户从键盘输入算数表达式,共进行16组测试序号测试功能测试内容输入项预期输出实际输出结果1基本计算操作单括号运算2*(3+4)+5*3=2929通过2基本计算操作多括号运算3+((4+3)*6)/3=1717通过3基本计算操作不能除整运算6*(2+(3/2))=2118有误差4基本计算操作不能除整运算(1+2+3)/4=1.51有误差5式子正误判断括号不匹配1+(1+3*2=输出错误信息输出错误信息通过6式子正误判断计算符多余1++2*3+6=输出错误信息输出错误信息通过7式子正误判断含非计算符x+y*z+w=输出错误信息输出错误信息通过8式子正误判断未输入”=”1+2*377通过9容错能力除数为02+3/0=输出除数为0输出除数为0通过10容错能力自动去空格1+ 2 * ( 3 + 4)=1515通过11容错能力“=”输为”#”2*(3+2)#1010通过12拓展功能多位正数计算10*(2+13)=150输出错误信息未通过13拓展功能负数计算4+3*(-4)+5=-3输出错误信息未通过15拓展功能小数计算1+10*0.1/2=6输出错误信息未通过16全体测试最终测试2*(4–(3+3) )+3 #-1-1通过部分运行截图基本计算操作不能整除运算(3)多括号运算(2)式子正误判断容错能力全体测试七、实验运行情况分析优点:用户输入格式较为自由。增添了一些能想到的容错系统,如用户未输入”=”,或是用户将”=”错输成”#”,或是用户在字符间输入空格,程序都会智能识别出正确的算数表达式,计算正确答案。防错报错系统较为完善。多方面考虑输入方面的错误,如括号不匹配、计算符少输多输、输入非计算符等方面均考虑,并提示用户错误信息,便于用户检查输入状况。存储方式较为规范。采用单链表存储用户输入的算术表达式,更加

您可能关注的文档

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档