Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 18.01.2019
Сообщений: 42

Списки List, HashSet

27.05.2020, 15:23. Показов 2055. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, решил сделать программу наподобие жеребьевки команд на пары. Команд восемь штук, сделал цикл при котором юзер введет свои команды в программу:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            //enter elements
            HashSet<string> commands = new HashSet<string>();
            int counter = 0;
            while (counter < 8)
            {
                Console.Write($"Введите вашу {counter + 1}-ю команду: "); ;
                bool succesfull = commands.Add(Convert.ToString(Console.ReadLine()));
                if(succesfull)
                {
                    Console.WriteLine("Команда добавлена.");
                }
                else
                {
                    Console.WriteLine("Неправильный ввод, возможно Вы добавили уже существующую команду.");
                    counter--;
                }
                counter++;
            }

Следующая задача состояла в том, что-бы создать еще два списка в которых бы я определил команды уже(потом придумаю как). Но вот в чем вопрос, как достать 4 любые елемента с этого списка в другой список? Пытался погуглить и на зарубежных форумах и на обычных, но ничего так и не нашел(либо нашел, но не понимал как это работает). Может кто-то подскажет как достать из одного множества в другой список 4 элемента?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2020, 15:23
Ответы с готовыми решениями:

Сравнение List, Dictionary, Hashset
Здравствуйте! Подскажите, где можно узнать про колекции List, Dictionary, Hashset такие вещи как: 1) алгоритмы их работы 2)...

Обобщенные списки List<> не получается их использовать
Не выходит создать правильно список. Выводит ошибку, что нужен конструктор, хотя он и так есть. Также не выходит создать проверку //Если...

Загрузить ListView из HashSet (ну или простого List)
По итерации цикла в строковое множество закладывается по две разных строки их всегда четное количество. Как их разделить эти строки по...

7
172 / 91 / 36
Регистрация: 22.05.2020
Сообщений: 308
27.05.2020, 16:48
Цитата Сообщение от Slocik Посмотреть сообщение
Может кто-то подскажет как достать из одного множества в другой список 4 элемента
C#
1
2
3
4
5
6
using System.Linq;
...
foreach (string cmd in commands.Take(4))
{
    Console.WriteLine(cmd);
}
0
2 / 2 / 0
Регистрация: 18.01.2019
Сообщений: 42
27.05.2020, 18:12  [ТС]
Ошибка CS1061 "HashSet<string>" не содержит определения "Take", и не удалось найти доступный метод расширения "Take", принимающий тип "HashSet<string>" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку). ConsoleApp1 C:\Users\alzne\source\repos\ConsoleApp1\ ConsoleApp1\Program.cs

Вот какая ошибка будет при Вашем коде. Но Вы немного не так поняли, либо я мало знаю. Вы мне предложили в переменную типа стринг взять эти 4 элемента, но я хочу в список(List<> или HashSet<>) взять. Либо как потом если эти данные перекинутся в переменную типа стирг закинуть в Лист?
0
172 / 91 / 36
Регистрация: 22.05.2020
Сообщений: 308
27.05.2020, 18:51
Slocik,
Во-первых. чтобы не ругалось на Take, добавьте using-директиву из первой строчки моего кода.
Во-вторых, foreach работает на перечислении элементов, то есть Take вернёт последовательность из 4-х элементов, которую один за другим переберёт foreach.
В-третьих, чтобы положить результат Take() в List<string> надо использовать соответствующий конструктор List<T>(IEnumerable<T>):
C#
1
var list = new List<string>(commands.Take(4));
1
2 / 2 / 0
Регистрация: 18.01.2019
Сообщений: 42
27.05.2020, 19:31  [ТС]
Хорошо, позже почитаю о этом конструкторе, как и что там работает и отпишусь, 100% будут еще вопросы, пока спасибо)
0
2 / 2 / 0
Регистрация: 18.01.2019
Сообщений: 42
28.05.2020, 13:32  [ТС]
Честно, пробывал разными способами и пока мало понимаю, могли бы Вы мне скинуть готовый пример как из множества с 8 элементам сделать два множества по 4 элемента? Буду премного благодарен.
0
172 / 91 / 36
Регистрация: 22.05.2020
Сообщений: 308
28.05.2020, 13:47
Лучший ответ Сообщение было отмечено Slocik как решение

Решение

Slocik,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//enter elements
HashSet<string> commands = new HashSet<string>();
int counter = 0;
while (counter < 8)
{
    Console.Write($"Введите вашу {counter + 1}-ю команду: "); ;
    bool succesfull = commands.Add(Convert.ToString(Console.ReadLine()));
    if (succesfull)
    {
        Console.WriteLine("Команда добавлена.");
    }
    else
    {
        Console.WriteLine("Неправильный ввод, возможно Вы добавили уже существующую команду.");
        counter--;
    }
    counter++;
}
 
HashSet<string> only4CommandsSet = new HashSet<string>(commands.Take(4));
HashSet<string> second4CommandsSet = new HashSet<string>(commands.Skip(4));
1
2 / 2 / 0
Регистрация: 18.01.2019
Сообщений: 42
28.05.2020, 14:02  [ТС]
Все так просто...Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2020, 14:02
Помогаю со студенческими работами здесь

КР Списки (Динамические структуры данных) (List) C#
Ребят,помогите,пожалуйста !!! Надо запилить до завтра,это все в оконном приложении! А мы учили только в концольке. 1) Списки List ...

Обсуждение HashSet, в частности- хранит HashSet объекты отсортированными или нет?
Что-то я не могу понять. Смотрите, мне надо запихать 10000 случайных элементов типа Integer в порядке их генерирования в HashSet, а потом...

HashSet. Удалить объект-класс из HashSet
Всем привет! Есть код: HashSet&lt;Human&gt; humanHashSet = new HashSet(); humanHashSet.add(new...

Списки List<T>
Входные данные для этой задачи должны читаться из текстового файла, а выходные – записываться в текстовый файл. В файле каждый набор...

Списки List
Здравствуйте, форумчанин. Недавно я освоил python. Было все проще и понятно. Но мне дали 3 вопроса: 1. Как обойти список? 2. Какие типы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru