pascal 计算器编程

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:31:11
Description

例如 后缀表达式输入为 7 2 + 4 - (每个数都是任意位,运算符号只是加减乘除,没有括号)
除法保证都能除尽,没有余数。如果除数为0,则输出 error

Input

后缀表达式

Output

计算结果

Sample Input

78 12 + 4 -

Sample Output

86
var

a:array[0..10000] of integer;
s:string; top,j:integer;
function pop:integer;
var
n:integer;
begin
n:=a[top];
pop:=n;
dec(top);
end;

procedure push(x:integer);
begin
inc(top);
a[top]:=x;
end;

procedure init;
begin
top:=0;
readln(s);
end;

procedure main;
var
top:integer;
i,x,y:integer;
begin
for i:=1 to length(s) do
begin
if (s[i]>='0') and (s[i]<='9') then push(ord(s[i])-ord('0'));
if s[i]='*' then begin push(pop*pop) end;
if s[i]='+' then begin push(pop+pop) end;
if s[i]=

var a:packed array[1..1000000] of real;ed:longint;s1,js,js1:real;s:string;ch:char;
procedure push(var over:longint;s:real);
begin
inc(over);a[over]:=s;
end;
procedure pop(var over:longint);
begin
a[over]:=0;dec(over);
end;
procedure top(var sj:real);
begin
sj:=a[ed];
end;
begin
s:='';fillchar(a,sizeof(a),0);read(ch);ed:=0;while ch<>'@' do begin
if ch in ['0'..'9'] then begin
while ch in ['0'..'9'] do begin s:=s+ch;read(ch);end;val(s,s1);s:='';push(ed,s1);end
else case ch of
'+':begin top(js);pop(ed);top(js1);pop(ed);push(ed,js+js1);end;
'-':begin top(js);pop(ed);top(js1);pop(ed);push(ed,js1-js);end;
'*':begin top(js);pop(ed);top(js1);pop(ed);push(ed,js*js1);end;
'/':begin top