Pascal 高精度加法

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:25:23
Program gaojingdu;
Uses
crt;
Type
longlong=array[0..101] of shortint;
Var
a,b,c:longlong;
m,n:integer;
Procedure init(var a,b:longlong;var m,n:integer);
Var
i,j:integer;
s:char;
Begin
for i:=1 to 2 do
begin
j:=0;
writeln('Input ',chr(i+96));
repeat
j:=j+1;
s:=readkey;
if s in ['0'..'9'] then
begin
write(s);
if i=1 then
a[j]:=ord(s)-48 else
b[j]:=ord(s)-48;
end;
until (s=#13)or(not(s in ['0'..'9']));
writeln;
if i=1 then m:=j else n:=j;
end;
End;
Procedure machine(var c:longlong; a,b:longlong; m,n:integer);
Var
i,l:integer;
Begin

if c[i-1]<>-1 then write(a[i]);
低级错误啊
不过更正过来程序好像还有问题
下面是我对此程序更正后的结果:
Program gaojingdu;
Uses
crt;
Type
longlong=array[-100..101] of shortint;{如果要后退100位,则必然会读取到a[-x],造成错误}
Var
a,b,c:longlong;
m,n:integer;
Procedure init(var a,b:longlong;var m,n:integer);
Var
i,j:integer;
s:char;
Begin
for i:=1 to 2 do
begin
j:=0;
writeln('Input ',chr(i+96));
repeat
j:=j+1;
s:=readkey;
if s in ['0'..'9'] then
begin
write(s);
if i=1 then
a[j]:=ord(s)-48 else
b[j]:=ord(s)-48;
end;
until (s=#13)or(not(s in ['