Приветствую всех, студенту задали задание в котором он просит ему помочь в написании алгоритма. И так у нас дано условие: Нужно вывести на экран 111111, 111122, 111133, 111144, 112211, 112222, 112233, 112244, 113311, 113322…444444. важно, чтобы алгоритм работал для 50 и более цифр подряд. Не будем терять времени и приступим к написанию кода.
Рассмотрим код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
//изучаем C# на nookery.ru class Program { static void Main(string[] args) { Console.Write("Введите парное число больше нуля : "); int number = int.Parse(Console.ReadLine()); GetNumbers(number); Console.ReadLine(); } public static void GetNumbers(int value) { if (value % 2 == 1) { Console.WriteLine("Число не парное!!!"); return; } List<int> values = Enumerable.Range(1, value).Select(x => x = 1).ToList(); while (!values.All<int>(x => x == 4)) { for (int i = 2; i < 5; i++) { Console.WriteLine("Значение : " + string.Join("", values)); values[values.Count - 1] = i; values[values.Count - 2] = i; } Console.WriteLine("Значение : " + string.Join("", values)); int index = values.FindIndex(new Predicate<int>((x) => { return x == 4; })); while (index != -1) { if (values.All<int>(x => x == 4)) break; if (index != 0) { values[index] = 1; values[index + 1] = 1; values[index - 1] = values[index - 1] + 1; values[index - 2] = values[index - 2] + 1; Console.WriteLine("Значение : " + string.Join("", values)); index = values.FindIndex(new Predicate<int>((x) => { return x == 4; })); } else { index = values.FindIndex(index + 2, new Predicate<int>((x) => { return x == 4; })); if (index != -1) { values[index] = 1; values[index + 1] = 1; values[index - 1] = values[index - 1] + 1; values[index - 2] = values[index - 2] + 1; index = -1; } break; } } } } } |