作业帮 > 综合 > 作业

free pascal高精度加法计算,求高手看看程序!追加悬赏50!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 05:08:23
free pascal高精度加法计算,求高手看看程序!追加悬赏50!
var
s,s1,s2:string;
a,b,c:array [1..260] of integer;
i,l,k1,k2:integer;
begin
write('input s1:');readln(s1);
write('input s2:');readln(s2);
l:=length(s1);
k1:=260;
for i:=l downto 1 do
begin
a[k1]:=ord(s1)-48;
k1:=k1-1;
end;
k1:=k1+1;
l:=length(s2);
k2:=260;
for I+:=l downto 1 do
begin
b[k2]:=ord(s2)-48;
k2:=k2-1;
end;
k2:=k2+1;
if k1>k2 then k:=k2 else k:=k1;
y:=0;
for i:=260 downto k do
begin
x:=a+b+y;
c:=x mod 10;
y:=x div 10;
end;
if y<>0 then begin k:=k-1;c[k]:=y;
end;
for i:=k to 260 do write(c);
writeln;
end.
{楼上的Compile都有问题(其他的暂且不说).
以后可以自己先调试看看有没有问题}
var a,b,c:array[0..256] of integer;
s1,s2:string;
i,z:integer;
begin
write('input s1:');readln(s1);
write('input s2:');readln(s2);
for i:=length(s1) downto 1 do a[i]:=ord(s1[i])-48;{原来的ord的用法是错误的}
for i:=length(s2) downto 1 do b[i]:=ord(s2[i])-48;
if length(s1)>length(s2) then z:=length(s1) else z:=length(s2);
for i:=z downto 1 do
begin
c[i]:=a[i]+b[i]+c[i];{c[i]自己也要加因为可能存在进位问题,
不明白可以自己去掉再试试23+97}
c[i-1]:=c[i-1]+c[i] div 10;
c[i]:=c[i] mod 10;
end;
if c[0]=0 then{如果两数相加进位将存入c[0]}
for i:=1 to z do write(c[i])
else for i:=0 to z do write(c[i]);
writeln;
end.