Заполнение массива, с условием - C#
Формулировка задачи:
Всем привет!
Подскажите горе программисту одну штуку:
Нужно заполнить одномерный массив на 11 ячеек, выбранным пользователем (от 1 до 6) количеством элементов, на рандомные позиция.
Единственное условие между каждым из элементов должна быть минимум 1 пустая ячейка.
Расставить 1, 2 и 6 не составляет проблем. Но вот как одним алгоритмом, при необходимости, расставлять 3, 4 и 5 не знаю.
Пока сделал костыльный while() который повторяет расстановку до тех пор пока все не станет как нужно, но работает это ужасно.
Решение задачи: «Заполнение массива, с условием»
textual
Листинг программы
using System; class Program { public static void Main() { Random rnd = new Random(); while (true) { Console.WriteLine("Введите число от 1 до 6"); string s = Console.ReadLine(); if (s == null) break; int n; if (!Int32.TryParse(s, out n) || n < 1 || n > 6) break; int[] spaces = new int[n + 1]; for (int i = 1; i < spaces.Length - 1; ++i) { spaces[i] = 1; } for (int i = 12 - n * 2; i != 0; --i) { spaces[rnd.Next(spaces.Length)]++; } for (int i = 0; i < spaces.Length; ++i) { if (i != 0) Console.Write("1 "); while (spaces[i]-- != 0) Console.Write("0 "); } Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д