0 / 0 / 0
Регистрация: 01.12.2014
Сообщений: 2
1

Разбор кода

01.12.2014, 20:30. Показов 729. Ответов 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.
Добавлено через 5 часов 23 минуты
Код вроде с этого же форума.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2014, 20:30
Ответы с готовыми решениями:

Напишите фрагмент кода для определения кода нажатой клавиши (расширенного кода в том числе)
Напишите фрагмент кода для определения кода нажатой клавиши (расширенного кода в том числе)....

Разбор кода
Помогите разобраться с кодом. В чём ошибка? qry1.Close; qry1.SQL.Clear; qry1.SQL.Text := 'UPDATE...

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

Разбор кода
Доброго времени суток, уважаемые форумчане. Возникла такая проблема: Необходимо разобрать работу...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2014, 20:30
Помогаю со студенческими работами здесь

Разбор кода
Есть код. Помогите пожалуйста в нём разобраться. А точнее. Какие функции в нём присутствуют,что они...

Разбор кода
Нужно разобрать код. не могу понять что тут выполняется, кроме открытия файлов #include...

Разбор кода
Ребят, помогите пожалуйста! Вот часть кода программы гостиницы. На ней стоит пароль, можно входить...

Разбор кода
Здравствуйте! Подскажите, пожалуйста, что обозначает вот это Utf8_16::utf8 Utf8_16::k_Boms зачем...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru