作业帮 > 综合 > 作业

PASCAL计算表达式值

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/27 19:17:48
PASCAL计算表达式值
【50分】
要求:用栈写,结果支持小数
输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾
输出:后缀表达式和运算结果
PASCAL计算表达式值
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:=0;
while ilength(s)) or (s[i-1]')');
end;
write('Result=',number[0]);
readln;
end.