PASCAL计算表达式值【50分】要求:用栈写,结果支持小数输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾输出:后缀表达式和运算结果
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 10:56:22
![PASCAL计算表达式值【50分】要求:用栈写,结果支持小数输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾输出:后缀表达式和运算结果](/uploads/image/z/2480166-54-6.jpg?t=PASCAL%E8%AE%A1%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%80%BC%E3%80%9050%E5%88%86%E3%80%91%E8%A6%81%E6%B1%82%EF%BC%9A%E7%94%A8%E6%A0%88%E5%86%99%2C%E7%BB%93%E6%9E%9C%E6%94%AF%E6%8C%81%E5%B0%8F%E6%95%B0%E8%BE%93%E5%85%A5%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%85%E5%90%AB%E2%80%98%2B%E2%80%99%E2%80%98-%E2%80%99%E2%80%98%2A%E2%80%99%E2%80%98%2F%E2%80%99%E2%80%98%EF%BC%88%E2%80%99%E2%80%98%EF%BC%89%E2%80%99%E5%8F%8A%E8%BF%90%E7%AE%97%E6%95%B0%2C%E4%BB%A5%E2%80%98%40%E2%80%99%E7%BB%93%E5%B0%BE%E8%BE%93%E5%87%BA%EF%BC%9A%E5%90%8E%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%92%8C%E8%BF%90%E7%AE%97%E7%BB%93%E6%9E%9C)
PASCAL计算表达式值【50分】要求:用栈写,结果支持小数输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾输出:后缀表达式和运算结果
PASCAL计算表达式值
【50分】
要求:用栈写,结果支持小数
输入的表达式包含‘+’‘-’‘*’‘/’‘(’‘)’及运算数,以‘@’结尾
输出:后缀表达式和运算结果
PASCAL计算表达式值【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:=0;
while ilength(s)) or (s[i-1]')');
end;
write('Result=',number[0]);
readln;
end.