Заполнение массива, с условием - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д