Добрый день, на днях мне написал один студент. В университете было дано задание: Задается натуральное трехзначное, как его развернуть так, чтобы цифры этого числа шли в обратном порядке, все это было необходимо реализовать на C#. К примеру нам дано 123 как получить 321. Я написал ему один из способов который давно мне известен.
1 2 3 4 5 |
int n = 123; Console.Write(n % 10); while ((n /= 10) != 0) Console.Write(n % 10); |
Рассмотрим более подробно код программы, у нас целочисленная переменная принимает число 123.
123
12*10=120 и остаток 3
Далее, идет условие что n не равно 0
12
1*10=10 и остаток 2
Далее, идет условие что n не равно 0
1
1 остаток
Таким образом с помощью этого метода мы сможем изменить любое число в обратном порядке, величина числа не имеет значение. Однако посидев, я пришел еще к одному решению. Рассмотрим и его:
1 2 |
int n = 123; Console.WriteLine(n.ToString().Reverse().ToArray()); |
В этом примере, у нас переменная содержит цифру 123, которую мы преобразуем в строковый тип string. После чего вызываем метод Reverse() и позволяющий изменить обратный порядок символов в строке. Но для этого нам необходимо разбить строку посимвольно и для этого мы используем метод ToArray(); Таким образом мы добились одного и того же результата двумя различными способами.
Однако я и на этом не остановился и решил данную задачу еще одним способом.
1 2 3 4 5 6 |
int n = 1234567; string chislo = n.ToString(); char[] mystr = chislo.ToCharArray(); for (int i = mystr.Length; i > 0; i--) Console.Write(mystr[i-1]); |
В этом примере я взял число 1234567 сохранил ее в переменной n и преобразовал ее в строку. А потом строку разбил посимвольно и сохранил в массив. Далее в цикле я по индексу в обратном порядке вывел все цифры наоборот в консоль. По сути это тот же самый пример что и предыдущий, однако он более разбит на ряд функций и более понятно демонстрирует каждый шаг.
Я переделал программу так чтобы пользователь вводил цифры, но как сделать так чтобы когда я ввожу например -501 не выводилось -1 0 -5 , а -105?
Самый простой вариант удалить все символы не входящие в цифры с помощью Replace, а потом перед первым цифровым значением вставить —
а какая у тебя программа? мой емайл 9055047161@mail.ru я задалась задачей в excel есть прямые и зеркальные им числа…. например 74 и 47, в сумме они дают 121 (это 11*11 или 11 в квадрате)… 47…4+7=11…74 7+4=11 и что мы видим … это совпадение или так, частный случай… кто сможет мне ответить… пока вручную и с некоторыми формулами дошла до 2560…
и для этого мне нужно отзеркалить числа хотя бы до 10000