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

Создать класс для работы коллекцией Dictionary<string, string>

08.05.2021, 15:33. Показов 2296. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс для работы со словарем Dictionary<string, string>. Ключ представляет собой символьное число из пяти цифр, а значением является некоторое слово. Если три левые цифры двух ключей совпадают, то определяемые ими слова являются синонимами. Вывести слова в текстовое окно таким образом, чтобы в каждой группе подряд идущих слов располагались только синонимы.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2021, 15:33
Ответы с готовыми решениями:

Создать класс String для работы со строками
Здраствуйте! Создать класс String для работы со строками,аналогичными строкам Turbo Pascal (строка представляется как массив 255...

Преобразовать из Dictionary<string, string> в Dictionary<string, List<string>>
Желательно лямбдой. Буду благодарен за варианты.

Как архивировать Dictionary<string, Dictionary<string, decimal[,]>>
Программа периодически создает Dictionary&lt;string, Dictionary&lt;string, decimal&gt;&gt; большого размера. Как сжать gzip такой словарь перед его...

3
15 / 8 / 7
Регистрация: 01.05.2021
Сообщений: 13
09.05.2021, 10:26
Лучший ответ Сообщение было отмечено Kopel как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
 
namespace ConsoleApp2
{
class Vocabulary
    {
        public Vocabulary()
        {
            dictionary = new Dictionary<string, string>();
        }
        public Dictionary<string, string> dictionary { set; get; }
        public override string ToString()
        {
            string s = "";
            foreach (KeyValuePair<string, string> word in dictionary)
            {
                s += word.Value + "\n";
                dictionary.Remove(word.Key);
                if (dictionary.Count>0)
                    foreach (KeyValuePair<string, string> word1 in dictionary)
                        if (Convert.ToInt32(word1.Key)/100== Convert.ToInt32(word.Key) / 100)
                        {
                            s += word1.Value + "\n";
                            dictionary.Remove(word1.Key);
                        }
                s += "\n";
            }
            return s;
        }
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            Vocabulary V = new Vocabulary();
            V.dictionary.Add("11101", "word1");
            V.dictionary.Add("22201", "word2");
            V.dictionary.Add("33301", "word3");
            V.dictionary.Add("11102", "synonym1");
            V.dictionary.Add("22202", "synonym2");
            V.dictionary.Add("33302", "synonym3");
            Console.WriteLine(V.ToString());
        }
    }
}
1
0 / 0 / 0
Регистрация: 24.03.2021
Сообщений: 6
10.05.2021, 18:20  [ТС]
K180RG , Можете объяснить код? Не совсем понимаю как это работает.
0
15 / 8 / 7
Регистрация: 01.05.2021
Сообщений: 13
12.05.2021, 19:01
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public override string ToString()
        {
            string s = "";//создаем пустую строку
            foreach (KeyValuePair<string, string> word in dictionary)//для каждой пары ключ-значение в словаре
            {
                s += word.Value + "\n";//значение добавляем в конец строки
                dictionary.Remove(word.Key);//удаляем текущий элемент из коллекции
                if (dictionary.Count>0)//если в коллекции остались элементы
                    foreach (KeyValuePair<string, string> word1 in dictionary)//для каждого из них
                        if (Convert.ToInt32(word1.Key)/100== Convert.ToInt32(word.Key) / 100)//если результаты деления ключей элемента из коллекции (word1) и элемента, значение которого мы переписали в строку (word) равны, т.е. " Если три левые цифры двух ключей совпадают", значит их значения синонимичны, потому
                        {
                            s += word1.Value + "\n";//добавляем значение к строке
                            dictionary.Remove(word1.Key);//удаляем элемент из коллекции
                        }
//в конце шага цикла получаем строку, в которую переписана группа синонимичных значений и словарь, из которого удалены элементы с этими значениями. 
                s += "\n";//добавляем к строке разделитель чтобы отделить уже записанную группу синонимов от следующей и идем на следующий круг, и так пока словарь не опустеет*
            }
            return s;//возвращаем структурированную строку
        }
вот так по идее оно должно работать, НО! не знаю каким местом я думал когда писал этот код- на выходе получим не только структурированный текст но и пустой словарь, т.е. работать с классом в дальнейшем станет невозможно можно в методе клонировать словарь и работать с клоном, а можно переделать все в старый дедовский велосипед- переписываем ключи и значения в два массива, попарно сортируем и выводим то что получится:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
 
namespace ConsoleApp2
{
class Vocabulary
    {
        public Vocabulary()
        {
            dictionary = new Dictionary<string, string>();
        }
        public Dictionary<string, string> dictionary { get; }
        public void SynonymsOutput()
        {
            int[] Keys = new int[dictionary.Count];
            string[] Values = new string[dictionary.Count];
            int i = 0;
            foreach (KeyValuePair<string, string> word in dictionary)
            {
                //переписысываем ключи и значения из словаря в два массива
                Keys[i] = Convert.ToInt32(word.Key) / 100;
                Values[i] = word.Value;
                i++;
            }
            //попарно сортируем массивы пузырьком
            for (i = 0; i < dictionary.Count - 1; i++)
                for (int j = i + 1; j < dictionary.Count; j++)
                    if (Keys[i] > Keys[j])
                    {
                        int tempKey = Keys[i];
                        Keys[i] = Keys[j];
                        Keys[j] = tempKey;
                        string tempValue = Values[i];
                        Values[i] = Values[j];
                        Values[j] = tempValue;
                    }
            //выводим отсортированный массив значений
            for (i = 0; i < dictionary.Count-1; i++)
            {
                Console.WriteLine(Values[i]);
                if (Keys[i + 1] != Keys[i])
                    Console.WriteLine();
            }
            Console.WriteLine(Values[i]);
        }
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            Vocabulary V = new Vocabulary();
            V.dictionary.Add("11101", "word1");
            V.dictionary.Add("22201", "word2");
            V.dictionary.Add("33301", "word3");
            V.dictionary.Add("11102", "synonym1");
            V.dictionary.Add("22202", "synonym2");
            V.dictionary.Add("33302", "synonym3");
            V.SynonymsOutput();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2021, 19:01
Помогаю со студенческими работами здесь

Как правильно добавить в Dictionary<string, List<string>> List<string> полученного с консоли
Всем привет, есть необходимость скопировать содержимое коллекции List&lt;string&gt; в значение Dictionary&lt;string, List&lt;string&gt;&gt; ...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population. Создание объектов может происходить как без...

Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population
Здравствуйте! По C# есть задачка, с которой я так и не разобрался :( Задача: Создайте класс Animal. Добавьте поля string...

Какие функции выполняет private readonly dictionary <string; string> и marker.BackColor?
Подскажите пожалуйста, какие функции выполняет private readonly dictionary &lt;string; string&gt; и marker.BackColor?

Обработать словарь типа Dictionary<string, string> и на выходе получить ступенчатый массив
Всем здравствуйте! Я только начинаю познавать программирование (около месяца).Поэтому прошу прощения в возможных неточностях определениях ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru