Алгоритм: как перевернуть число?
у нас есть 5 значное число, например: 51351, каким образом можно его перевернуть, чтобы было 15315, без использования циклов, условий, я еще не дошел до этого, спасибо заранее
Ответы (4 шт):
Если без циклов и условий, то вот:
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);
Нам нужно сначала взять последнюю цифру и поставить её первой из пяти в результат. Чтобы взять последнюю цифру, можно найти остаток от деления на 10.
12345 % 10 = 5Затем ставим в результат первой из пяти цифр:
result += 5 * 10000 = 50000Далее нам нужно отбросить от изначального числа последнюю цифру, т.к. мы её уже положили в результат, используем целочисленное деление на 10
12345 / 10 = 1234Возвращаемся к пункту 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);
string input = Console.ReadLine();
char[] inputarray = input.ToCharArray();
Array.Reverse(inputarray);
string output = new string(inputarray);
Console.WriteLine(output);
int num = 51351;
int num1 = num%10 * 10000 + (num/10)%10 * 1000 + (num/100)%10 * 100 + (num/1000)%10 * 10 + num/10000;
Так код будет выглядеть компактнее и для любого положительного int-а
int num = int.Parse(Console.ReadLine());
string result = "";
while (num > 0)
{
int a = num % 10;
num = num / 10;
result += a;
}
Console.WriteLine(result);