[Randomizer] Nurbolat Solution
Alemkhan
csharp
8 months ago
4.9 kB
1
Indexable
Never
using System; string[] names = new string[] { "name1", "name2", "name3", "name4", "name5", }; void Menu() { Console.WriteLine( "Добро пожаловать в рандомайзер!\n" + "################################\n" + "1. Показать все имена\n" + "2. Добавить имена\n" + "3. Получить случайные имена\n" + "4. Получить случайные команды" ); int input = Convert.ToInt32(Console.ReadLine()); switch (input) { case 1: PrintNames(); break; case 2: AddNames(); break; case 3: RandomNames(); break; case 4: CreateRandomTeam(); break; } } void PrintNames() { int i = 1; foreach (string name in names) { Console.WriteLine($"{i}. {name}"); i++; } Console.WriteLine("--------------------"); Pause(); Menu(); } void AddNames() { Console.WriteLine("Напишите все имена через пробел"); string? tempNames = Console.ReadLine(); string[] tempArrayNames = tempNames.Split(" "); string[] tempArray = new string[tempArrayNames.Length + names.Length]; for (int i = 0; i < names.Length; i++) { tempArray[i] = names[i]; } for (int i = names.Length; i < tempArray.Length; i++) { tempArray[i] = tempArrayNames[i - names.Length]; } names = tempArray; Console.WriteLine("Имена успешно сохранились!"); Pause(); Menu(); } string[] RandomElements(int input) { Random random = new Random(); string[] tempElements = new string[names.Length]; int i = 0; while (i < input) { int randomIndex = random.Next(names.Length); string randomName = names[randomIndex]; while (tempElements.Contains(randomName)) { randomIndex = random.Next(names.Length); randomName = names[randomIndex]; } tempElements[i] = randomName; i++; } return tempElements; } void RandomNames() { Console.WriteLine( $"Сколько имен хотите в диапазоне от 0 до {names.Length}" ); int input = Convert.ToInt32(Console.ReadLine()); if (input > 0 && input <= names.Length) { string[] tempNames = RandomElements(input); Console.WriteLine("Случайные имена:"); foreach (string tempName in tempNames) { Console.WriteLine(tempName); } Pause(); Menu(); } } void CreateRandomTeam() { Console.WriteLine($"Введите количество участников в одной команде (число не должно быть больше чем {names.Length})"); int teamSize = Convert.ToInt32(Console.ReadLine()); if (teamSize <= 0 || teamSize > names.Length) { Console.WriteLine("Неверный ввод. Пожалуйста, укажите корректное количество участников в команде."); Pause(); Menu(); return; } Random random = new Random(); string[] remainingNames = new string[names.Length]; Array.Copy(names, remainingNames, names.Length); int numberOfTeams = (int)Math.Ceiling((double)names.Length / teamSize); string[][] teams = new string[numberOfTeams][]; for (int i = 0; i < numberOfTeams; i++) { int currentTeamSize = Math.Min(teamSize, remainingNames.Length); teams[i] = new string[currentTeamSize]; for (int j = 0; j < currentTeamSize; j++) { int randomIndex = random.Next(remainingNames.Length); teams[i][j] = remainingNames[randomIndex]; string[] tempNames = new string[remainingNames.Length - 1]; Array.Copy(remainingNames, 0, tempNames, 0, randomIndex); Array.Copy(remainingNames, randomIndex + 1, tempNames, randomIndex, remainingNames.Length - randomIndex - 1); remainingNames = tempNames; } } Console.WriteLine($"Количество участников в команде: {teamSize}\n"); for (int i = 0; i < numberOfTeams; i++) { Console.WriteLine($"Команда {i + 1}: {string.Join(", ", teams[i])}"); } Pause(); Menu(); } Menu(); void Pause() { Console.WriteLine("Нажмите на любую клавишу для возвращение в меню"); Console.ReadKey(); Console.Clear(); }
Leave a Comment