【转载】后缀表达式求值

原创 2015年07月10日 09:45:41
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.



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jing1223639316/article/details/46826613
收藏助手
不良信息举报
您举报文章:【转载】后缀表达式求值
举报原因:
原因补充:

(最多只允许输入30个字)