Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
36
максимуму». В остальном нужно было экспериментировать, чтобы найти наиболее легкое и нагляд-
ное решение. Конечно, псевдографика – это не алгоритмическое программирование, и в нем тести-
рование и эксперимент играют чуть ли не самую важную роль.
Код:
1.
program MyTable;
2.
3.
var
4.
i, n: byte;
5.
6.
begin
7.
readln(n);
8.
writeln('/-----------------------------------------------
---------\');
9.
writeln('| x | x^2 |
x^3 |');
10.
writeln('|-----------------------------------------------
---------|');
11.
for i := 1 to n do begin
12.
writeln('|', i:9, '|':10, i * i:9, '|':10, i * i * i:9,
'|':10)
13.
end;
14.
writeln('\-----------------------------------------------
---------/')
15.
end.
Задача № 31. Сформировать реверсную запись заданного числа
Формулировка. Дано натуральное число n заранее неизвестной разрядности. Сформировать
и вывести на экран число, представляющее собой реверсную запись n.
Решение. Это более общий случай задачи 4, в которой при случае трехзначного n отчетливо
видны повторяющиеся фрагменты кода. Попытаемся получить общий алгоритм решения через
цикл.
Пусть дано число 25893. Возьмем его последнюю цифру как остаток от деления на 10 – это 3.
Очевидно, она должна быть первой. Отбросим ее у числа n и возьмем последнюю цифру 9 – она
должна быть второй. Чтобы сформировать две цифры реверсного числа, умножим 3 на 10 и приба-
вим 9, потом добавим третью цифру и т. д.
Так как разрядность числа неизвестна, мы будем использовать цикл с предусловием. Его тело
будет выглядеть так:
r := r * 10;
r := r + n mod 10;
n := n div 10;
Поначалу результат r должен быть равен 0, и тогда умножение нуля на 10 в первом шаге не
разрушает формирование реверсной записи, которое теперь может быть заключено в один цикл.
Каким же будет условие продолжения? Нетрудно понять, что когда мы будем добавлять по-
следнюю оставшуюся цифру исходного числа n к реверсной записи r, мы умножим r на 10, приба-
вим к ней как n mod 10 (в данном случае этот остаток равен n) и разделим n на 10. Тогда n станет
равно 0 и цикл должен закончиться, так что условие его продолжения – n < > 0.
Do'stlaringiz bilan baham: |