PASCAL计算表达式值

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:57:52
【50分】
要求:用栈写,结果支持小数
输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾
输出:后缀表达式和运算结果

program exsj_1;
const
max=100;
var
number:array[0..max] of integer;
symbol:array[1..max] of char;
s,t:string;
i,p,j,code:integer;
procedure push;{算符入栈运算}
begin
inc(p);symbol[p]:=s[i];
end;

procedure pop;{运算符栈顶元素出栈,并取出操作数栈元素完成相应的运算}
begin
dec(p);
case symbol[p+1] of
'+':inc(number[p],number[p+1]);
'-':dec(number[p],number[p+1]);
'*':number[p]:=number[p]*number[p+1];
'/':number[p]:=number[p] div number[p+1];
end;
end;

function can:boolean;{判断运算符的优先级别,建立标志函数}
begin
can:=true;
if (s[i] in ['+','-']) and (symbol[p]<>'(') then exit;
if (s[i] in ['*','/']) and (symbol[p] in ['*','/']) then exit;
can:=false;
end;

begin
write('String : '); readln(s); s:='('+s+')'; i:=1; p