Напишите функцию int reverse(int n) (C/C++), function reverse (n:integer):integer (Pascal), которая...

Тематика Информатика
Уровень 5 - 9 классы
функции программирование C++ Pascal обратный порядок цифры число алгоритм
0

Напишите функцию int reverse(int n) (C/C++), function reverse (n:integer):integer (Pascal), которая переставляет цифры числа в обратном порядке .

Входные данные

Задано единственное число N

Выходные данные

Необходимо вывести цифры данного числа в обратном порядке.

avatar
задан 15 дней назад

3 Ответа

0

Чтобы решить задачу обратного порядка цифр числа на языках 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.

Пояснение

  1. Проверка знака:

    • Мы сначала определяем знак числа. Это важно, чтобы корректно вернуть отрицательное число после обработки.
  2. Цикл обработки цифр:

    • В обоих случаях мы используем цикл while, который продолжается, пока число не станет нулем.
    • Внутри цикла мы извлекаем последнюю цифру числа с помощью операции mod (остаток от деления).
    • Добавляем эту цифру в новое число, умножая текущее "обратное" число на 10 и добавляя новую цифру.
    • Затем уменьшаем исходное число, отбрасывая уже обработанную цифру с помощью целочисленного деления.
  3. Возвращение результата:

    • В конце мы возвращаем полученное число, умноженное на знак, чтобы сохранить изначальный знак числа.

Обе программы работают с целыми числами и корректно обрабатывают как положительные, так и отрицательные числа.

avatar
ответил 15 дней назад
0

Для решения данной задачи мы можем использовать следующий алгоритм:

  1. Создать переменную result и инициализировать ее нулем.
  2. Пока входное число n не станет равным нулю:
    • Получить последнюю цифру числа n (остаток от деления n на 10) и добавить ее к переменной result.
    • Удалить последнюю цифру числа n (путем целочисленного деления n на 10).
  3. Вернуть значение переменной result как результат работы функции.

Таким образом, функция reverse будет выглядеть следующим образом на языке C++:

int reverse(int n) {
    int result = 0;
    while (n != 0) {
        result = result * 10 + n % 10;
        n = n / 10;
    }
    return result;
}

На языке Pascal реализация функции может выглядеть следующим образом:

function reverse(n: integer): integer;
var
  result, digit: integer;
begin
  result := 0;
  while n  0 do
  begin
    digit := n mod 10;
    result := result * 10 + digit;
    n := n div 10;
  end;
  reverse := result;
end;

Таким образом, при вызове функции reverse с числом N в качестве аргумента, она вернет число, составленное из цифр числа N в обратном порядке.

avatar
ответил 15 дней назад
0

int reverse(int n) {

int reversed = 0;
while(n > 0) {
    reversed = reversed * 10 + n % 10;
    n /= 10;
}
return reversed;

}

function reverse (n:integer):integer; var

reversed, digit: integer;

begin

reversed := 0;
while n > 0 do
begin
    digit := n mod 10;
    n := n div 10;
    reversed := reversed * 10 + digit;
end;
reverse := reversed;

end;

avatar
ответил 15 дней назад

Ваш ответ

Вопросы по теме