一部分:
var a,b,s:string; w:char; la,lb:integer;
procedure fcal(as,bs:string; w:char);
var x,i:integer; a,b:array[1..20000]of integer;
begin
for i:=1 to length(as) do a[length(as)-i+1]:=ord(as[i])-48;
for i:=1 to length(bs) do b[length(bs)-i+1]:=ord(bs[i])-48;
if la>lb then x:=la
else x:=lb;
if w='+' then
begin
for i:=1 to x do
begin
a[i]:=a[i]+b[i];
a[i+1]:=a[i+1]+a[i]div 10;
a[i]:=a[i]mod 10;
end;{for}
while a[x+1]<>0 do x:=x+1;
la:=x-1;
end;{+}
if w='-' then
begin
for i:=1 to la do
begin
if a[i]<b[i] then begin
dec(a[i+1]); a[i]:=a[i]+10;
end;
a[i]:=a[i]-b[i];
end;
while a[la]=0 do dec(la);
{ dec(la);}
end;{-}
for i:=la+1 downto 1 do write(a[i]);
writeln;
end;{fcal}
begin
readln(a);
readln(w);
readln(b);
la:=length(a);
lb:=length(b);
writeln('=');
fcal(a,b,w);
readln;
end.
var a,b,s:string; w:char; la,lb:integer;
procedure fcal(as,bs:string; w:char);
var x,i:integer; a,b:array[1..20000]of integer;
begin
for i:=1 to length(as) do a[length(as)-i+1]:=ord(as[i])-48;
for i:=1 to length(bs) do b[length(bs)-i+1]:=ord(bs[i])-48;
if la>lb then x:=la
else x:=lb;
if w='+' then
begin
for i:=1 to x do
begin
a[i]:=a[i]+b[i];
a[i+1]:=a[i+1]+a[i]div 10;
a[i]:=a[i]mod 10;
end;{for}
while a[x+1]<>0 do x:=x+1;
la:=x-1;
end;{+}
if w='-' then
begin
for i:=1 to la do
begin
if a[i]<b[i] then begin
dec(a[i+1]); a[i]:=a[i]+10;
end;
a[i]:=a[i]-b[i];
end;
while a[la]=0 do dec(la);
{ dec(la);}
end;{-}
for i:=la+1 downto 1 do write(a[i]);
writeln;
end;{fcal}
begin
readln(a);
readln(w);
readln(b);
la:=length(a);
lb:=length(b);
writeln('=');
fcal(a,b,w);
readln;
end.









