高精度算法

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:09:01
把这一个高精度题目的每一步都解释清楚

var a,b:string;
e,f,g:array[1..100] of integer;
w,c,d,h,q,i,j,k,n:integer;
begin
readln(a);
readln(b);
c:=length(a);
d:=length(b);

for i:=100 downto 1 do
val(a[c-100+i],f[i],h);
for i:=100 downto 1 do
val(b[d-100+i],g[i],q);
for i:=100 downto 1 do
begin
e[i]:=f[i]+g[i];
if e[i]>=10 then
begin
e[i]:=e[i]-10;
f[i-1]:=f[i-1]+1;
end; end;
i:=1;
while e[i]=0 do begin i:=i+1 ;end;
for i:=i to 100 do
write(e[i]);writeln;
end.

高分赏
回答得好还会追加分
YEAH!!!!
请帮我解释一下,拜托啦!~~~~~~~~~~~
不具体
需改进

var a,b:string;
e,f,g:array[1..100] of integer;
w,c,d,h,q,i,j,k,n:integer;
begin
readln(a);
readln(b);
c:=length(a); 计算串长
d:=length(b); 计算串长

for i:=100 downto 1 do
val(a[c-100+i],f[i],h); 把a[c-100+i]这个字符转换为数字保存在f[i]中,h没有用,只是个标志
for i:=100 downto 1 do
val(b[d-100+i],g[i],q); 同上
for i:=100 downto 1 do
begin
e[i]:=f[i]+g[i]; 倒序相加
if e[i]>=10 then 大于10
begin
e[i]:=e[i]-10; 当前为-10
f[i-1]:=f[i-1]+1; 下一位+1
end; end;
i:=1;
while e[i]=0 do begin i:=i+1 ;end; 第一位是否为0,统计位数
for i:=i to 100 do
write(e[i]);writeln;
end.