Длинная арифметика. Сложение двух чисел

Часто бывает, когда нужно сложить два числа, которые слишком велики для стандартных типов переменных в языках программирования. Тогда на помощь приходят алгоритмы из так называемой «длинной арифметики»
Ниже подан алгоритм сложения двух длинных чисел.
Числа для сложения находятся в файле «Input.txt»

Материал взят тут

 
var
  s1, s2: string;
  a, b: array[1..100] of integer;//количество цифр в числе
  len, i, c: integer;
  f1, f2: text;

begin
  Assign(f1, 'INPUT.TXT');  Reset(f1);
  Assign(f2, 'OUTPUT.TXT'); ReWrite(f2);
  c := 0;
  ReadLn(f1, s1);
  ReadLn(f1, s2);
  close(f1);
  len := length(s1);                      {разбиение строк в элементы массивов}
  for i := 1 to len do
    a[len - i + 1] := Ord(s1[i]) - 48;
  len := length(s2);
  for i := 1 to len do
    b[len - i + 1] := Ord(s2[i]) - 48;
  
  if length(s1) > length(s2) then len := length(s1)
  else len := length(s2);
  for i := 1 to len do
  begin
    c := c + a[i] + b[i];         {переменная c будет в дальнейшем использоваться для переноса числа в следующия ряд}
    a[i] := c mod 10;         {результат сложения запишем в массив а} 
    c := c div 10;
  end;
  if c > 0 then begin
    len := len + 1;
    a[len] := c;
  end;
  for i := len downto 1 do     {вывод результата в файл}
    Write(f2, a[i]);
  close(f2);
end.
 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии