сам алгоритм был правильный,но работал неверно.
мне подсказали,что нужно в определенном месте поставить команду Break.
но к сожалению не объяснили,для чего.
не могли бы вы объяснить мне это?
без него результат получается неверным.
Код
var
i,j,s:integer;
begin
kd:=0;
for i:=1 to ka do
for j:=1 to kb do
begin
s:=0;
if ja[i]=ib[j] then s:=s+an[i]*bn[j];
if s<>0 then
begin
kd:=kd+1;
dn[kd]:=s;
id[kd]:=ia[i];
jd[kd]:=jb[j];
end;
end;
for i:=1 to kd do
begin
for j:=2 to kd do
if (id[i]=id[j]) and (jd[i]=jd[j]) then
begin
dn[i]:=dn[i]+dn[j];
dn[j]:=0;
id[j]:=0;
jd[j]:=0;
end;
break;
end;
end;
i,j,s:integer;
begin
kd:=0;
for i:=1 to ka do
for j:=1 to kb do
begin
s:=0;
if ja[i]=ib[j] then s:=s+an[i]*bn[j];
if s<>0 then
begin
kd:=kd+1;
dn[kd]:=s;
id[kd]:=ia[i];
jd[kd]:=jb[j];
end;
end;
for i:=1 to kd do
begin
for j:=2 to kd do
if (id[i]=id[j]) and (jd[i]=jd[j]) then
begin
dn[i]:=dn[i]+dn[j];
dn[j]:=0;
id[j]:=0;
jd[j]:=0;
end;
break;
end;
end;