Программируем

Пожалуйста, зарегистрируйтесь или войдите под уже созданным логином. Вы получите полный доступ ко всем статьям форума.

Join the forum, it's quick and easy

Программируем

Пожалуйста, зарегистрируйтесь или войдите под уже созданным логином. Вы получите полный доступ ко всем статьям форума.

Программируем

Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Программируем

На нашем форуме программистов вы сможете найти софт для программирования и другие программы. На форуме обсуждаются многие языки программирования, задачи и их решения. Используются языки: C, Assembler, Pascal, Delphi, Flash и другие.

Последние темы

» Арена искусственных интеллектов Gridwars
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyСр Окт 12, 2016 2:43 am автор SeriousPasha

» требуется несколько JS разработчиков
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyПт Окт 07, 2016 10:19 pm автор mrktwn1

» Защита приложения от взлома
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyЧт Июн 18, 2015 10:28 pm автор stradi

» Ищите программиста или дизайнера?
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyПт Мар 27, 2015 6:25 am автор фриланс

» Создание и продвижение сайтов, их развитие.
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyСр Мар 25, 2015 12:40 am автор asdfghhgfdsa

» Исходники для студентов + скайп-консультации,помощь в написании программ
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyВт Окт 07, 2014 11:25 pm автор Horpion

» IT- технологии для развития бизнеса
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyПн Июн 23, 2014 6:11 pm автор dvos12

» Стенли Кубрик "С Широко закрытыми Глазами"
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyЧт Июн 12, 2014 2:01 am автор Vertuozzz

» Каталог популярных хостинг компаний
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. EmptyСб Май 10, 2014 7:18 pm автор naik

Самые активные пользователи

Aster (142)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Exkalibur (89)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Чебурашка (63)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Administrator (34)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
ak95 (8)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Пушкин (7)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
K4_ (7)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
LuDa (7)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Goldcoding (6)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 
Admin (6)
Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_leftРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. BarРазность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Bar_right 

Партнеры

Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Top100 Rambler's Top100

    Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi.

    Aster
    Aster
    Admin
    Admin


    Сообщения : 142
    Очки : 274
    Репутация : 11
    Дата регистрации : 2010-01-07

    Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi. Empty Разность(вычитание) длинных чисел. Длинная арифметика. Pascal, Delphi.

    Сообщение автор Aster Вт Май 25, 2010 2:55 pm

    Прежде чем читать эту статью, просмотрите https://progaem.forum2x2.ru/forum-f3/tema-t81.htm и https://progaem.forum2x2.ru/forum-f3/tema-t82.htm
    Наконец-то я решился написать еще парочку статей о длинной арифметике)
    Итак, приступим.
    Вычитание, как и сложение, проводится столбиком.
    То есть:
    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;

    Вот и вся функция.

      Текущее время Пн Май 06, 2024 10:59 pm