Чет про программирование / практика / 22) Вывод длинного числа на печать
.docxВывод длинного числа на печать
const
base_shift = 4;
base = 1 shl base_sift;
mask = base - 1;
var
c, b, a: TlongN;
procedure long_write(a, b: TLongN);
var
a: TlongN;
res: string;
x: integer;
Begin
a := copy(b, 0, length(b));
res := '';
while (length(a) > 1) or (a[0] <> 0) do begin
x := long_div(a, 10);
res := chr(x + orf('0')) + res;
end;
if res = '' then res := '0';
end;
function long_div(var a: TLongN; x: integer): integer;
var
k, i, j: integer;
Begin
k := 1;
for i := High(a) downto 0 do begin
j := j shl base_shift + a[i]; // j = j*16+a[i]
a[i] := j div x;
j := j mod x;
if (a[i] <> 0) and (k = 1) then
k := i+1;
end;
SetLength(a, k);
Result := j;
end;