Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 2

Длинное деление (готовый код)

01.12.2014, 23:35. Показов 564. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Есть код длинного деления. Пожалуйста, объясните, что, где и как в нём.
То есть для чего предназначены определённые циклы, что делаем на таком-то этапе, что хранят переменные и так далее. Закомментировать.

Заранее спасибо.
Кстати, особая благодарность, если подскажете, как убрать из него вычисление остатка.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const
  Max = 255;
 
type
  Mas = Array[0..Max] Of Byte;
 
var
  S: Boolean;
  M1, M2: String;
  A1, A2, Mm1, Mm2, P: Mas;
  Cod: Integer;
  f, k, l, i, j, z, C, q, sum: Integer;
  M, N1, N2: Integer;
 
function Sravn(M: Integer; A1, Mm2: Mas): Boolean;
var
  k: Integer;
begin
  if M <> N2 then Sravn := (M > N2)
  else begin
    Sravn := true;
    k := 1;
    while (k <= M) and (A1[k] = Mm2[k]) do inc(k);
    if (k <= M) then Sravn := (A1[k] > Mm2[k]);
  end;
end;
 
begin
  WriteLn(' Vvedite delimoe');
  ReadLn(M1);
  N1 := LengTh(M1);
  for i := 1 To N1 Do Val(M1[i], Mm1[i], Cod);
  WriteLn(' Vvedite delitel');
  ReadLn(M2);
  N2 := LengTh(M2);
  for i := 1 To N2 Do Val(M2[i], Mm2[i], Cod);
  for i := 1 To N2 - 1 Do A1[i] := Mm1[i];
  M := N2 - 1;
  i := M;
  while(i < N1) Do
  begin
    while ((Sravn(M, A1, Mm2) = False) And (i < N1)) Do
    begin
      sum := 0;
      for q := 1 to M do
      begin
        sum := sum + A1[q];
        if sum <> 0 then break;
      end;
      if ((M > 0) and (sum <> 0)) or (M = 0) then M := M + 1;
      i := i + 1;
      A1[M] := Mm1[i];
    end;
    j := 0;
    while(Sravn (M, A1, Mm2) = True) Do
    begin
      f := N2 + 1;
      for k := M DownTo M - N2 Do
      begin
        f := f - 1;
        if A1[k] >= Mm2[f] Then A2[k] := A1[k] - Mm2[f]
              Else
        begin
          A1[k] := A1[k] + 10;
          A1[k - 1] := A1[k - 1] - 1;
          for l := k DownTo 1 Do
            if A1[l] < 0 Then
            begin
              A1[l - 1] := A1[l - 1] - 1;
              A1[l] := A1[l] + 10;
            end;
          A2[k] := A1[k] - Mm2[f];
        end;
      end;
      for l := M - N2 - 1 DownTo 1 Do
        A2[l] := A1[l];
      j := j + 1;
      P[i - N2 + 1] := j;
      while((A2 [1] = 0) And (M > 0)) Do
      begin
        for z := 1 To M - 1 Do
          A2[z] := A2[z + 1];
        M := M - 1;
        A2[M + 1] := 0;
      end;
      for z := 1 To M Do
        A1[z] := A2[z];
    end;
    while((A1 [1] = 0) And (M > 0)) Do
    begin
      for z := 1 To M - 1 Do
        A1[z] := A1[z + 1];
      M := M - 1;
      A1[M + 1] := 0;
    end;
  end;
  WriteLn(' Chastnoe: ');
  j := 1;
  while ((P[j] = 0) And (j >= N1 - N2)) Do j := j + 1;
  while P[j] = 0 do inc(j);
  for i := j To N1 - N2 + 1 Do Write(P[i]);
  WriteLn;
  if M = 0 Then
  begin
    M := 1;
    A1[M] := 0;
  end;
  WriteLn(' Ostatok');
  for i := 1 To M Do Write(A1[i]);
  ReadLn;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2014, 23:35
Ответы с готовыми решениями:

Дек//Готовый код
Ребят вот нашёл код дека, и его подправил для своих нужд. Но сделал одну вещь не так, надо задать может через уикл, но не знаю как. ...

Составить таблицу, используя готовый код задачи
Добрый день, помогите пожалуйста составить таблицу, используя готовый код задачи: const nmax=100; Var A,B:array of integer; ...

Длинное деление
Необходимо именно деление длинного числа на длинное, пытался искать в интернете но работающих исходников не нашел, или даже хотя бы...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2014, 23:35
Помогаю со студенческими работами здесь

Добавление сортировки в готовый код
Здрасвтвуйте. Помогите пожалуйста. Нужно сформированный массив перед выводом на экран упорядочить по возрастанию. program lab3a; ...

Очереди.Подправить готовый код.
Даны три очереди. Одна пуста а в двух других находятся натуральные числа. С помощью первой очереди упорядочить числа во второй очереди по...

Запустите готовый код на выполнение
Надо запустить прогу,если кто в силах,то сказать два слова про нее Просит разные библиотеки, т.д. и т.п. Помогите пожалуйста

Готовый код: Сумма кодов первой и второй букв
Народ, нужна помощь! по готовому коду Условие задания Во всех вариантах требуется разработать программу, реализующую комбинированный...

Длинное деление
Ограничение по времени: 2 секунды Ограничение по памяти: 64 мегабайта На вход подается три строки. Первая содержит представление...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru