实验3-逆波兰式的产生及计算.doc

实验3-逆波兰式的产生及计算.doc

ID:57275849

大小:84.00 KB

页数:5页

时间:2020-08-08

实验3-逆波兰式的产生及计算.doc_第1页
实验3-逆波兰式的产生及计算.doc_第2页
实验3-逆波兰式的产生及计算.doc_第3页
实验3-逆波兰式的产生及计算.doc_第4页
实验3-逆波兰式的产生及计算.doc_第5页
资源描述:

《实验3-逆波兰式的产生及计算.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、河南工业大学实验报告课程名称编译原理_实验项目实验三逆波兰式的产生及计算院系____信息科学与工程学院____专业班级__计科F1201班________姓名____张伟龙___________学号_____3_____指导老师阎娟日期2015.5.7批改日期成绩一.实验目的1.深入理解算符优先分析法2.掌握FirstVt和LastVt集合的求法有算符优先关系表的求法3.掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化二.实验内容及要求将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并计算用逆波兰式

2、来表示的算术表达式的值。程序输入/输出示例:输出的格式如下:(1)逆波兰式的生成及计算程序,编制人:姓名,学号,班级(2)输入一以#结束的中缀表达式(包括+—*/()数字#):在此位置输入符号串如(28+68)*2#(3)逆波兰式为:28&68+2*(4)逆波兰式28&68+2*计算结果为192备注:(1)在生成的逆波兰式中如果两个数相连则用&分隔,如28和68,中间用&分隔;(2)在此位置输入符号串为用户自行输入的符号串。注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、数字,结束符#;2.如果遇到错误的表

3、达式,应输出错误提示信息(该信息越详细越好);3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;三.实验过程#include#include#include#includeusingnamespacestd;/*************************************************题目:将中缀后缀式用来表示的算术表达式转换

4、为用逆波兰式来表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。我们假设输入的中缀表达式都是合法的函数:cal():计算算符优先级compute():计算表达式ace():出栈计算Author:dezhonger************************************************/constdoubleEPS=1e-6;#defineDIVIDEBYZERO"divideByZero"//除零错误#defineGOOD"good"strings,ans,FLAG;stack

5、st;//符号栈stacksd;//数字栈intcal(charc){switch(c){case'+':case'-':return1;case'*':case'/':return2;default:return-;}}doublecompute(charc,doublea,doubleb){switch(c){case'+':returna+b;case'-':returna-b;case'*':returna*b;case'/':{if(fabs(b)

6、eturna/b;}default:return-;}}voidact(){ans+=st.top();doublea=sd.top();sd.pop();doubleb=sd.top();sd.pop();//cout<

7、<>s){cout<<"中缀表达式为:"<

8、])){ans+=s[i];temp=temp*10+s[i++]-'0';}sd.push(temp);i--;}elseif(c=='#');elseif(c=='(')st.push(c);elseif(c==')'){while(st.top()!='('){act();}st.pop();}else{whi

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

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

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