Формулировка. Дано натуральное число 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.
Код:
1. program ReverseOfN; 2. 3. var 4. r, n: word; 5. 6. begin 7. readln(n); 8. r := 0; 9. while n <> 0 do begin 10. r := r * 10; 11. r := r + n mod 10; 12. n := n div 10 13. end; 14. writeln(r) 15. end. |
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.