3042 писал(а):
Я когда-то смотрел подобный модуль (может, даже этот самый) и помню, что были там какие-то ошибкиПрямо скажем, и здесь -- шедевр еще тот...
............
type
TMathArray = array of integer;
............
procedure MultiplyArray(var a1, a2, a: TMathArray);
var i,j:integer;
b:boolean;
begin
// массив результата никто предварительно и не обнулял, как оказывается.
for i := length(a2) - 1 downto 0 do
for j := length(a1) - 1 downto 0 do
a[j + i] := a[j + i] + (a2[i] * a1[j]);
repeat // а вот так подсчитываются переносы :shock:
b := true;
for i := 0 to length(a) - 1 do
if a[i] > 9 then begin
b := false;
try
a[i + 1] := a[i + 1] + 1;
except
setlength(a, length(a) + 1);
a[i + 1] := a[i + 1] + 1;
end;
a[i] := a[i] - 10;
end;
until b;
end;
............
Можно писать программы, которые делают то, чего ты сам делать не умеешь.