Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2018-11-18 10:05:24 ЛС | профиль | цитата
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;
............
Оказывается, программисту не обязательно уметь умножать в столбик.
Можно писать программы, которые делают то, чего ты сам делать не умеешь.
карма: 9

0
Редактировалось 5 раз(а), последний 2018-11-18 10:18:31