【转载】后缀表达式求值

program li;
type
   stack=array[1..100] of real;
var
  s:stack;
  top,i,j:integer;
  a:string;
  ch:char;
  x:real;

procedure setnull;
begin
top:=0;
end;
procedure push( var s1:stack;y:real);
begin
  if  top=100
     then  writeln('overflow')
     Else  begin
          Top:=top+1;
          s1[top]:=y;
          end;
end;
function pop(var s2:stack):real;
begin
    If  top=0  then  writeln('underflow')
                   Else
                     begin
                      pop:=s2[top];
                      top:=top-1;
                      end;

end;
begin
readln(a);
setnull;
i:=1;
ch:=a[i];
while ch<>'@' do begin
  case ch of
    '0'..'9': begin
                x:=0;
                while ch<>' 'do begin
                 x:=x*10+ord(ch)-ord('0');
                 i:=i+1;
                 ch:=a[i];  end;
              end;
    '+':x:=pop(s)+pop(s);
    '-':begin x:=pop(s); x:=pop(s)-x; end;
    '*':x:=pop(s)*pop(s);
    '/':begin  x:=pop(s); x:=pop(s)/x; end;
  end;
push(s,x);
i:=i+1;
ch:=a[i];
end;
write(s[1]:0:2);
end.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值