Прежде чем читать эту статью, просмотрите https://progaem.forum2x2.ru/forum-f3/tema-t81.htm и https://progaem.forum2x2.ru/forum-f3/tema-t82.htm
Наконец-то я решился написать еще парочку статей о длинной арифметике)
Итак, приступим.
Вычитание, как и сложение, проводится столбиком.
То есть:
222500
111500
111000
Собственно, начинаем наше вычитание с конца и если из 1 цифры не можем вычесть другую, то "занимаем" у предыдущего разряда.
Длина результата, очевидно, будет не больше длины максимального числа, поэтому с этим проблем не будет.
Вот и вся функция.
Наконец-то я решился написать еще парочку статей о длинной арифметике)
Итак, приступим.
Вычитание, как и сложение, проводится столбиком.
То есть:
222500
111500
111000
Собственно, начинаем наше вычитание с конца и если из 1 цифры не можем вычесть другую, то "занимаем" у предыдущего разряда.
Длина результата, очевидно, будет не больше длины максимального числа, поэтому с этим проблем не будет.
- Код:
Function Sub(var a, b: TLong): TLong;
Var i, t: integer;
c: TLong;
Begin
Fillchar(c, sizeof(c), 0); //Опустошаем результат.
if b[0] > a[0] then swap(a, b); //делаем так, чтобы в числе а было число большей длины, процедуру swap(обмен) напишите сами)
For i := 1 to a[0] do
begin
t := a[i] - b[i]; //результат в текущем разряде.
if t < 0 then
begin
dec(a[i + 1]); //уменьшаем предыдущий разряд. "занимаем".
t := t + base; //прибавляем к результату "заимствованный разряд".
end;
c[i] := t;
end;
c[0] := a[0]; //длина результата = длине а.
while(c[c[0]] = 0) and (c[0] > 1) do dec(c[0]); //если реальная длина меньше, то уменьшаем ее, убирая ведущие нули.
sub := c;
End;
Вот и вся функция.
Ср Окт 12, 2016 2:43 am автор SeriousPasha
» требуется несколько JS разработчиков
Пт Окт 07, 2016 10:19 pm автор mrktwn1
» Защита приложения от взлома
Чт Июн 18, 2015 10:28 pm автор stradi
» Ищите программиста или дизайнера?
Пт Мар 27, 2015 6:25 am автор фриланс
» Создание и продвижение сайтов, их развитие.
Ср Мар 25, 2015 12:40 am автор asdfghhgfdsa
» Исходники для студентов + скайп-консультации,помощь в написании программ
Вт Окт 07, 2014 11:25 pm автор Horpion
» IT- технологии для развития бизнеса
Пн Июн 23, 2014 6:11 pm автор dvos12
» Стенли Кубрик "С Широко закрытыми Глазами"
Чт Июн 12, 2014 2:01 am автор Vertuozzz
» Каталог популярных хостинг компаний
Сб Май 10, 2014 7:18 pm автор naik