Задано целое число N. Напишите программу, которая которая переставляет цифры числа в обратном порядке.
Формат входных данных
Во входных данных содержится одно целое число N (-2 * 10° < N ≤ 2 * 10°).
Формат выходных данных
Выведите число, которое получается из исходного перестановкой цифр в обратном порядке. Ведущие нули, которые могут оказаться в «перевернутом числе» выводить не надо!
Паскаль
Ответы
Ответ:
program ReverseDigits;
uses
crt;
const
MAX_INPUT = 2000000000;
MIN_INPUT = -2000000000;
var
N : Int64;
Remainder : Integer;
IsUserInputOk : Boolean = false;
IsInputNegative : Boolean = false;
begin
repeat
clrscr;
write('Введите N: ');
readln(N);
if (N > MAX_INPUT) or (N <= MIN_INPUT) then
begin
writeln('Число вне допустимого промежутка!');
writeln('Нажмите любую кнопку, чтобы повторить ввод.');
readkey();
end
else
begin
IsUserInputOk := true;
end;
until IsUserInputOk;
if (N < 0) then
begin
N := abs(N);
IsInputNegative := true;
end;
while N > 0 do
begin
remainder := N mod 10;
if (remainder <> 0) then
write(remainder);
N := N div 10;
end;
if (IsInputNegative) then
write('-');
end.
Обратите внимание, что знак, числа учитывается, т.е.
-123 превратится в 321-
Если вам не нужно разворачивать знак, уберите строки
if (IsInputNegative) then
write('-');
while N > 0 do
begin
remainder := N mod 10;
if (remainder <> 0) then
write(remainder);
N := N div 10;
end;
Это и есть цикл с условием. Только этот код отвечает за перестановку цифр в числе. Всё остальное просто проверяет, действительно ли N в заданном диапазоне.
Вот в onlinegdb
https://onlinegdb.com/3FSoksYcC
-2 * 10° = -2
2 * 10° = 2
Таким образом, ваше целое число попадает в промежуток
{-1, 0, 1, 2}
Отсюда вопрос, какие цифры в этих числах можно переставить?