Заполнение массива, с условием - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Подскажите горе программисту одну штуку: Нужно заполнить одномерный массив на 11 ячеек, выбранным пользователем (от 1 до 6) количеством элементов, на рандомные позиция. Единственное условие между каждым из элементов должна быть минимум 1 пустая ячейка. Расставить 1, 2 и 6 не составляет проблем. Но вот как одним алгоритмом, при необходимости, расставлять 3, 4 и 5 не знаю. Пока сделал костыльный while() который повторяет расстановку до тех пор пока все не станет как нужно, но работает это ужасно.

Решение задачи: «Заполнение массива, с условием»

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     public static void Main()
  6.     {
  7.         Random rnd = new Random();
  8.         while (true)
  9.         {
  10.             Console.WriteLine("Введите число от 1 до 6");
  11.             string s = Console.ReadLine();
  12.             if (s == null) break;
  13.             int n;
  14.             if (!Int32.TryParse(s, out n) || n < 1 || n > 6) break;
  15.             int[] spaces = new int[n + 1];
  16.             for (int i = 1; i < spaces.Length - 1; ++i)
  17.             {
  18.                 spaces[i] = 1;
  19.             }
  20.             for (int i = 12 - n * 2; i != 0; --i)
  21.             {
  22.                 spaces[rnd.Next(spaces.Length)]++;
  23.             }
  24.             for (int i = 0; i < spaces.Length; ++i)
  25.             {
  26.                 if (i != 0) Console.Write("1 ");
  27.                 while (spaces[i]-- != 0) Console.Write("0 ");
  28.             }
  29.             Console.WriteLine();
  30.         }
  31.     }
  32. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы