Алгоритм: как перевернуть число?

у нас есть 5 значное число, например: 51351, каким образом можно его перевернуть, чтобы было 15315, без использования циклов, условий, я еще не дошел до этого, спасибо заранее


Ответы (4 шт):

Автор решения: FatCatStudent

Если без циклов и условий, то вот:

int num = 12345, result = 0;
int a = num % 10;
num = num / 10;
result += a * 10000;

a = num % 10;
num = num / 10;
result += a * 1000;

a = num % 10;
num = num / 10;
result += a * 100;

a = num % 10;
num = num / 10;
result += a * 10;

a = num % 10;
num = num / 10;
result += a;

Console.WriteLine(result);
  1. Нам нужно сначала взять последнюю цифру и поставить её первой из пяти в результат. Чтобы взять последнюю цифру, можно найти остаток от деления на 10. 12345 % 10 = 5

  2. Затем ставим в результат первой из пяти цифр: result += 5 * 10000 = 50000

  3. Далее нам нужно отбросить от изначального числа последнюю цифру, т.к. мы её уже положили в результат, используем целочисленное деление на 10 12345 / 10 = 1234

  4. Возвращаемся к пункту 1.

Когда вернёмся у нас будет: 1234 % 10 = 4

Теперь эту цифру нужно поставить второй по счёту: result += 4 * 1000 = 54000

И так все 5 цифр.

Этот метод не сработает, если будут числа вроде 10000. Тогда остаток от деления даст 0, мы будем умножать 0 на 100000, на 10000, 1000 и т.д. до 1, в итоге вывод будет просто 1.

Но это решается, если мы будем использовать в качестве контейнера для результата строку:

int num = 10000;
string result = "";
int a = num % 10;
num = num / 10;
result += a;

a = num % 10;
num = num / 10;
result += a;

a = num % 10;
num = num / 10;
result += a ;

a = num % 10;
num = num / 10;
result += a;

a = num % 10;
num = num / 10;
result += a;

Console.WriteLine(result);
→ Ссылка
Автор решения: ANDR
string input = Console.ReadLine();
char[] inputarray = input.ToCharArray();
Array.Reverse(inputarray);
string output = new string(inputarray);
Console.WriteLine(output);
→ Ссылка
Автор решения: Alexander
int num = 51351;

int num1 = num%10 * 10000 + (num/10)%10 * 1000 + (num/100)%10 * 100 + (num/1000)%10 * 10 + num/10000;
→ Ссылка
Автор решения: Andy Kravetz

Так код будет выглядеть компактнее и для любого положительного int-а

int num = int.Parse(Console.ReadLine());

    string result = "";

    while (num > 0)
    {
        int a = num % 10;
        num = num / 10;
        result += a;
    }

    Console.WriteLine(result);
→ Ссылка