Сформувати реверсну запис заданого числа

Формулювання. 
Дано натуральне число n заздалегідь невідомої розрядності. Сформувати і вивести на екран число, що представляє собою реверсну запис 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.
program ReverseOfN;
var
r, n: word;
begin
readln(n);
r := 0;
while n <> 0 do begin
r := r * 10;
r := r + n mod 10;
n := n div 10
end;
writeln(r)
end.

Немає коментарів:

Дописати коментар