Чтобы решить задачу обратного порядка цифр числа на языках C/C++ и Pascal, мы можем воспользоваться как математическими операциями, так и операциями с символами (строками). Рассмотрим оба подхода, но сначала реализуем математический способ, который более универсален и не зависит от дополнительных библиотек.
Реализация на C/C++
#include
int reverse(int n) {
int reversed = 0;
int sign = 1;
// Проверка на отрицательное число
if (n < 0) {
sign = -1;
n = -n;
}
while (n != 0) {
int digit = n % 10; // Получаем последнюю цифру
reversed = reversed * 10 + digit; // Добавляем её в обратное число
n /= 10; // Убираем последнюю цифру из числа
}
return reversed * sign;
}
int main() {
int number;
printf("Введите число: ");
scanf("%d", &number);
int reversedNumber = reverse(number);
printf("Число в обратном порядке: %d\n", reversedNumber);
return 0;
}
Реализация на Pascal
program ReverseNumber;
function reverse(n: integer): integer;
var
reversed, digit, sign: integer;
begin
reversed := 0;
sign := 1;
// Проверка на отрицательное число
if n < 0 then
begin
sign := -1;
n := -n;
end;
while n 0 do
begin
digit := n mod 10; // Получаем последнюю цифру
reversed := reversed * 10 + digit; // Добавляем её в обратное число
n := n div 10; // Убираем последнюю цифру из числа
end;
reverse := reversed * sign;
end;
var
number, reversedNumber: integer;
begin
write('Введите число: ');
readln(number);
reversedNumber := reverse(number);
writeln('Число в обратном порядке: ', reversedNumber);
end.
Пояснение
Проверка знака:
- Мы сначала определяем знак числа. Это важно, чтобы корректно вернуть отрицательное число после обработки.
Цикл обработки цифр:
- В обоих случаях мы используем цикл
while
, который продолжается, пока число не станет нулем.
- Внутри цикла мы извлекаем последнюю цифру числа с помощью операции
mod
(остаток от деления).
- Добавляем эту цифру в новое число, умножая текущее "обратное" число на 10 и добавляя новую цифру.
- Затем уменьшаем исходное число, отбрасывая уже обработанную цифру с помощью целочисленного деления.
Возвращение результата:
- В конце мы возвращаем полученное число, умноженное на знак, чтобы сохранить изначальный знак числа.
Обе программы работают с целыми числами и корректно обрабатывают как положительные, так и отрицательные числа.