【转载】后缀表达式求值

来源:互联网 发布:纬创软件股份有限公司 编辑:程序博客网 时间:2024/05/03 01:46
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.



0 0
原创粉丝点击