版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.实验目的深入理解算符优先分析法掌握FirstVt和LastVt集合的求法有算符优先关系表的求法掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化.实验内容及要求将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。程序输入J输出示例:输出的格式如卜:逆波兰式的生成及计算程序,编制人:|姓名,学号,班瓦输入一以#结束的中缀表达式(包括*/ ()数字#): |在此位置输入符号串如(28+68)*2御逆波兰式为:|28&68+2*逆波兰式|28&68+2*|计算结果为|192|备注:(1)在生成的逆波兰式中如果两个数相连则用&分隔,如28和68
2、,中间用&分隔;|在此位置输入符号串|为用户自行输入的符号串。注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、数字,结束符#;如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以 分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照:三.实验过程1、逆波兰式定义将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称 做后缀式。逆波兰式的特点在于运算对象顺序不变,运算符号位置反映运算顺序。采用 逆波兰式可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式
3、。2、产生逆波兰式的前提中缀算术表达式3、逆波兰式生成的实验设计思想及算法首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多 加上了优先级最低的特殊符号从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析 到该数字串的结束并将该数字串直接输出。如果不是数字,该字符则是运算符,此时需比较优先关系。做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系 高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将此运算符栈顶的运算符从栈中弹出,将该字符入栈。重复上述
4、操作(1)-(2)直至扫描完整个简单算术表达式,确定所有字符都得到正确处 理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。3、逆波兰式计算的实验设计思想及算法构造一个栈,存放运算对象。读入一个用逆波兰式表示的简单算术表达式。自左至右扫描该简单算术表达式并判断该字符,如果该字符是运算对象,则将 该字符入栈。若是运算符,如果此运算符是二目运算符,则将对栈顶部的两个运算对象 进行该运算,将运算结果入栈,并旦将执行该运算的两个运算对象从栈顶弹出。如果该 字符是一目运算符,则对栈顶部的元素实施该运算,将该栈顶部的元素弹出,将运算结 果入栈。重复上述操作直至扫描完整个简单算术表
5、达式的逆波兰式,确定所有字符都得 到正确处理,我们便可以求出该简单算术表达式的值。实验的源程序代码如下:#include#include弃define max 100char exmax;void trans0/*char exmax;void trans0/*将算术表达式转化为后缀表达式*/clw strniax;/*存储原算术表达式*/clw stackniax;/*作为栈使用*/char ch;int sum,i,j,t,top=0;pnntff*输入一个求值的表达式,以#结束。int sum,i,j,t,top=0;pnntff*输入一个求值的表达式,以#结束。*1T);p 血 w*
6、*f pnntf(”算数表达式:,】=0;/*获取用户输入的表达式*/do(i+;scanf(”c”.&stri);while(stri!=# & i!=max);sum=i;t=l;i=l; ch=stri;i+;while(ch!=#)switch(ch)(case (,:/*判定为左括号*/top+;stacktop=ch;break;case y:/*判定为右括号*/while(stacktopext=stacktop; top;t+; top-;break;/*判定为加减号/*判定为加减号*/casewhile(top!=0&stacktop !=()ext=stacktop ;to
7、p-;t+;top+;stacktop=ch;break;case/*判定为乘除号*/case 71:while(stacktop=* * | stacktop=7) (ext=stacktop ;top;t+;)top+;stacktop=ch;break;case 1 f: break;default:while(ch=,0,&ch=,9,)(/* 判定为数字*/ext=ch;t+;ch=stii;i+;1-;ext=#;t+;)ch=stri;i+;while(top!=0)(ext=stacktop;t+;top;ext=#;pnntfCiit 原来表达式:);fbr(j=l j=O&ch#中舞表达式;12*15-6) 逆波兰表达式:12&15&6 I计算结 = 108Press atny key to continue.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离子渗氮工艺技师考试试卷及答案
- 2025年内蒙古包头市住房发展建设集团有限公司招聘11人笔试历年参考题库附带答案详解
- 2025山东青岛排水有限公司员工招聘3人笔试历年参考题库附带答案详解
- 2025国家电投集团电投置业选聘14人笔试历年参考题库附带答案详解
- 2025四川资源集团招聘134人查看职位笔试历年参考题库附带答案详解
- 2025四川中江振鑫产业集团招聘14人笔试历年参考题库附带答案详解
- 2025内蒙古巴彦淖尔市磴口县国有农场公司统一招聘考察和政审笔试历年参考题库附带答案详解
- 2025云南省交通投资建设集团有限公司管理人员校园招聘84人笔试历年参考题库附带答案详解
- 2025中煤西北能源化工集团有限公司社会招聘39人笔试历年参考题库附带答案详解
- 2025中国石油锦西石化公司春季高校毕业生招聘10人笔试历年参考题库附带答案详解
- 订单计划达成管理制度
- 临床护理带教的方法与技巧
- “双减”背景下中小学作业数字化管理模式探究
- 2025人教版(2024)小学美术一年级下册教学计划、教学设计及教学反思(附目录)
- 医生独立值班申请书
- 草料购买合同范例
- 【川教版】《生命 生态 安全》五下全册课件
- 2023年泸州市泸县选调机关事业单位人员考试真题
- 《世界地理-撒哈拉以南的非洲》备课讲稿
- 2024年江苏省南京市水务所属事业单位招聘5人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 110kV主变压器订货技术协议
评论
0/150
提交评论