167
|
385
|
2
|
4
|
7-й шаг
|
3
|
674
|
851
|
23
|
|
|
Проанализируем
таблицу (и получим ответы на поставленные выше вопросы).
1. В А[0]
храним количество задействованных (ненулевых) элементов массива А — это уже
очевидно.
2. При
обработке каждой очередной цифры входного числа старшая цифра элемента массива
с номером i становится младшей цифрой числа в элементе i+1, а вводимая цифра
будет младшей цифрой числа из А[1]. В результате работы нашего алгоритма мы
получили число, записанное "задом наперед".
Примечание
(методическое): Можно ограничиться этим объяснением и разработку процедуры
вынести на самостоятельное задание. Можно продолжить объяснение. Например, выписать фрагмент текста процедуры перенос старшей цифры из A[i] в младшую
цифру А[i+1], т.е. сдвиг уже введенной части числа на одну позицию вправо:
For i := A[0] DownTo 1 Do
Begin
A[i+l] := A[i+l] + (Longint(A[i]) *
10) Div Osn;
A[i] := (LongInt(A[i]) * 10) Mod
Osn;
End;
Пусть мы вводим
число 23851674 и первые 6 цифр уже разместили "задом наперед" в
массиве А. В символьную переменную считали очередную цифру "длинного"
числа — это "7". По нашему алгоритму эта цифра "7" должна
быть размещена младшей цифрой в А[1]. Выписанный фрагмент программы
"освобождает" место для этой цифры. В таблице отражены результаты
работы этого фрагмента.