关闭

【转载】后缀表达式求值

65人阅读 评论(0) 收藏 举报
分类:
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15153次
    • 积分:108
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档