编译原理实验三 逆波兰式的产生及计算

编译原理实验三 逆波兰式的产生及计算

ID:41127162

大小:60.00 KB

页数:4页

时间:2019-08-17

编译原理实验三 逆波兰式的产生及计算_第1页
编译原理实验三 逆波兰式的产生及计算_第2页
编译原理实验三 逆波兰式的产生及计算_第3页
编译原理实验三 逆波兰式的产生及计算_第4页
资源描述:

《编译原理实验三 逆波兰式的产生及计算》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三逆波兰式的产生及计算一、实验目的:将用中缀式表示的算术表达式转换为用逆波兰式表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。二、实验内容:  1.定义部分:定义常量、变量、数据结构。2.初始化:设立算符优先分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);3.控制部分:从键盘输入一个表达式符号串;4.利用算符优先分析算法进行表达式处理:根据算符优先分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。5.对生成的逆波兰式进行计算。三、实验要求:输入如下:21+((42-2)*15+6)-18#输出如下:原来表达式:21+((42-

2、2)*15+6)-18#后缀表达式:21&42&2&-15&*6&++18&-计算结果:609四、实验源程序:#include#include#definemax100charex[max];voidtrans(){charstr[max];charstack[max];charch;intsum,i,j,t,top=0;printf("请输入一个求值的表达式,以#结束。");printf("算数表达式:");i=0;/*输入表达式*/do{i++;scanf("%c",&str[i]);}while(str[i]!='#'&&i!=max);sum=

3、i;t=1;i=1;ch=str[i];i++;while(ch!='#'){switch(ch){/*判定为左括号*/case'(':top++;stack[top]=ch;//入栈break;/*判定为右括号*/case')':while(stack[top]!='('){//栈顶不为'('时ex[t]=stack[top];top--;t++;}top--;break;//栈顶为'(',退栈/*运算符*//*判定为加减号*/case'+':case'-':while(top!=0&&stack[top]!='('){ex[t]=stack[top];top--;t++;/*stack

4、[]为运算符ω栈*/}top++;stack[top]=ch;break;/*判定为乘除号*/case'*':case'/':while(stack[top]=='*'

5、

6、stack[top]=='/'){ex[t]=stack[top];top--;t++;}top++;stack[top]=ch;break;case'':break;/*判定为数字*/default:while(ch>='0'&&ch<='9'){ex[t]=ch;t++;/*ex[]中存放逆波兰式*/ch=str[i];i++;/*str[]中存放中缀表达式*/}i--;ex[t]='&';t++;break;}ch

7、=str[i];i++;}/*当中缀表达式扫描完毕,检查ω栈是否为空,若不空则一一退栈*/while(top!=0){ex[t]=stack[top];t++;top--;}ex[t]='#';printf("t原来表达式:");for(j=1;j

8、switch(ch){case'+':stack[top-1]=stack[top-1]+stack[top];top--;break;case'-':stack[top-1]=stack[top-1]-stack[top];top--;break;case'*':stack[top-1]=stack[top-1]*stack[top];top--;break;case'/':if(stack[top]!=0)stack[top-1]=stack[top-1]/stack[top];else{printf("t除零错误!");break;/*异常退出*/}top--;break;

9、/*将数字字符转化为对应的数值*/default:d=0;while(ch>='0'&&ch<='9'){d=10*d+ch-'0';ch=ex[t];t++;}top++;stack[top]=d;}ch=ex[t];t++;}printf("t计算结果:%g",stack[top]);}voidmain(){trans();compvalue();}五、实验运行结果:

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

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

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