逆波兰式计算.doc

逆波兰式计算.doc

ID:59316371

大小:12.50 KB

页数:2页

时间:2020-09-05

逆波兰式计算.doc_第1页
逆波兰式计算.doc_第2页
资源描述:

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

1、1.颠倒数组     用递归的算法把数组中的N个数的次序重新存放后输出。2.逆波兰式    由键盘输入一个算术表达式,求出它的逆波兰式,并输出数值。    例:((3+4)*3+15)/3  的逆波兰式为3 4 + 3 * 15 + 3 /         计算结果为12const m=100;type stack=array[1..m] of integer;var s:stack;    a:string;    t,i,j,k,len:integer;procedure push(x:integer);{进栈}  begin    t:

2、=t+1;    s[t]:=x;  end;function pop:integer;{出栈}  begin    pop:=s[t];    t:=t-1;  end;begin  readln(a); {读入后缀表达式}  len:=length(a);    i:=1;      {后缀表达式字符指针初始化}  t:=0;      {栈初始化}  while i<=len do  {处理后缀表达式,直至结束}    begin      case a[i] of'0'..'9':begin                   k:=

3、0;                   while a[i]<>’.’ do                      begin      {从s中取出一个完整的操作数k}                       k:=10*k+ord(a[i])-48;                       i:=i+1;                     end;                   push(k);{把k压栈}                 end; '+':push(pop+pop);     {从栈s中取出栈顶

4、的两个数进行加法运算,然后将结果在压栈}'-':begin  {从栈s中取出栈顶的两个数进行减法运算,然后将结果在压栈}              j:=pop;              push(pop-j);     end; '*':push(pop*pop);     {从栈s中取出栈顶的两个数进行乘法运算,然后将结果在压栈}  '/':begin  {从栈s中取出栈顶的两个数进行除法运算,然后将结果在压栈}              j:=pop;              push(pop div j);      end;en

5、d;{case}i:=i+1;  end;{while}  writeln(pop);  {取出栈顶元素,即时表达式的最后结果}end.

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

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

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