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

Работа с классом SortedDictionary

29.05.2013, 09:18. Показов 4399. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть переменная dict в которую закидываются данные, в последствии надо скопировать ключи в массив string а значения в массив double как это сделать?(пример напишите) попытался описать это в foreach не получилось, поэтому еще вопрос как собственно работает foreach?
C#
1
2
3
4
public string[] g2;
public double[] z2;
 
SortedDictionary<char, double> dict = new SortedDictionary<char, double>();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2013, 09:18
Ответы с готовыми решениями:

Работа с SortedDictionary
SortedDictionary&lt;int, int&gt; dic = new SortedDictionary&lt;int,int&gt;(); Есть число в каждой строчке, + оно добавляется, - нужно убрать +5 ...

Работа с классом
Ребята подскажите как правильно исправить ошибку что бы компилировался код public class Begin { public...

Работа с классом
Итак, продолжаю изучать С, на этот раз волею судьбы закинуло в С#. Проблема. Есть некий класс. Необходимо сделать массив классов и...

15
 Аватар для FrostByte
104 / 104 / 19
Регистрация: 23.05.2013
Сообщений: 185
29.05.2013, 09:52
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main()
        {
 
            int index = 0;
 
            SortedDictionary<char, double> dict = new SortedDictionary<char, double>();
 
            dict.Add('a', 112.2);
            dict.Add('w', 32123232.3);
            int length = dict.Count;
            char[] g2 = new char[length];
            double[] z2 = new double[length];
 
            foreach (var d in dict)
            {
                g2[index] = d.Key;
                z2[index] = d.Value;
                index++;
            }
            Console.WriteLine("index\tString\tDoudle");
            for (int i = 0; i < length; i++)
            {
                Console.WriteLine("{0}\t{1}\t{2}", i, g2[i], z2[i]);
            }
            Console.ReadKey();
        }
    }
}
0
 Аватар для vladimir8686
36 / 36 / 4
Регистрация: 27.05.2012
Сообщений: 180
Записей в блоге: 5
29.05.2013, 09:54
наверное как то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    SortedDictionary<string, int> sort = new SortedDictionary<string, int>();
    sort.Add("cat", 2);
    sort.Add("dog", 9);
    sort.Add("mouse", 4);
    sort.Add("programmer", 100);
 
    string[] st = new string[sort.Count];
    int[] it = new int[sort.Count];
            
    for (int i = 0; i < sort.Count; i++) 
    {
        sort.Keys.CopyTo(st, 0);
        sort.Values.CopyTo(it, 0);
    }
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 11:59  [ТС]
Цитата Сообщение от FrostByte Посмотреть сообщение
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main()
        {
 
            int index = 0;
 
            SortedDictionary<char, double> dict = new SortedDictionary<char, double>();
 
            dict.Add('a', 112.2);
            dict.Add('w', 32123232.3);
            int length = dict.Count;
            char[] g2 = new char[length];
            double[] z2 = new double[length];
 
            foreach (var d in dict)
            {
                g2[index] = d.Key;
                z2[index] = d.Value;
                index++;
            }
            Console.WriteLine("index\tString\tDoudle");
            for (int i = 0; i < length; i++)
            {
                Console.WriteLine("{0}\t{1}\t{2}", i, g2[i], z2[i]);
            }
            Console.ReadKey();
        }
    }
}
...

Добавлено через 7 минут
FrostByte, При первой же попытки присвоения программой выдается "Ссылка на объект не указывает на экземпляр объекта."
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 12:06
у меня все работает
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 12:10  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
у меня все работает
Вложение 274613
разница есть если запускать в форме а не консоли?
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 12:13
Естественно Замените все вызовы Console.WriteLine на ListBox (или куда вы там данные выводите), а так же проверьте как вы добавляете данные в словарь
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 12:17  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
Естественно Замените все вызовы Console.WriteLine на ListBox (или куда вы там данные выводите), а так же проверьте как вы добавляете данные в словарь
я говорю именно про ошибку которая у меня возникает, в общем вот код
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string s = "";                   //Таблица Символов Текста
        public string s1 = "оеаитнсрвлкмдпуяызьбгчйхжюшцщэф";                  //Таблица Символов Русского Алфавита 31
        public string[] g1 = { "о","е","а","и","т","н","с","р","в","л","к","м","д","п","у","я","ы","з","ь","б","г","ч","й","х","ж","ю","ш","ц","щ","э","ф" };
        public double[] z1 = { 90, 72, 62, 62, 53, 53, 45, 40, 38, 35, 28, 26, 25, 23, 21, 18, 16, 16, 14, 14, 13, 12, 10, 9, 7, 6, 6, 4, 3, 3, 2};
        public char[] g2 = new char[31];
        public double[] z2 = new double[31];
        private void открытьФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                textBox1.Text = File.ReadAllText(openFileDialog1.FileName);
            }
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void зашифроватьТекстToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox2.Clear();
            if (textBox1.Text == "")
                MessageBox.Show("Откройте файл с текстом!");
            string a = textBox1.Text;
            string b = "";
            int n = 3;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] != ' ' && a[i] != ',' && a[i] != '.' && a[i] != ':' && a[i] != ';' && a[i] != '-')
                {
                    if (Convert.ToChar((int)a[i] + n) > 1103)
                        b += Convert.ToChar((int)a[i] - 32 + n);
                    else
                        b += Convert.ToChar((int)a[i] + n);
                    textBox2.Text += b[i];
                }
                else
                {
                    b += a[i];
                    textBox2.Text += b[i];
                }
            }
        }
 
        private void создатьТаблицуСимволовToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox3.Clear();
            textBox3.ScrollBars = ScrollBars.Vertical;
            if (textBox2.Text == "")
                MessageBox.Show("Зашифруйте текст!");
            string text = textBox2.Text.Replace(" ", string.Empty).ToLower();
 
            SortedDictionary<char, double> dict = new SortedDictionary<char, double>();
 
            for (int i = 0; i < text.Length; i++)
            {
                if (text[i] != ',' && text[i] != '.' && text[i] != ':' && text[i] != ';' && text[i] != '-')
                    if (dict.ContainsKey(text[i]))
                        dict[text[i]]++;
                    else
                        dict.Add(text[i], 1);
            }
           int ind = 0;
            foreach (var d in dict)
            {
                g2[ind] = d.Key;
                z2[ind] = d.Value;
                ind++;
            }
            var sortDict = dict.OrderByDescending(x => x.Value);
            foreach (KeyValuePair<char, double> kvp in sortDict)
            {
                textBox3.Text += "Символ: '" + kvp.Key + "', - " + kvp.Value / 1000 + "\r\n";
                s += kvp.Key;
            }
            графикЧастотногоАнализаToolStripMenuItem.Visible=true;
        }
 
        private void заменитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox3.Text == "")
            {
                MessageBox.Show("Создайте таблицу Символов!");
            }
            else
            {
                label2.Text = "Расшифрованный Текст:";
                string t = textBox2.Text;
                string t1 = "";
                bool f = true;
                for (int i = 0; i < t.Length; i++)
                {
                    for (int j = 0; j < s1.Length; j++)
                    {
                        if (t[i] == s[j])
                        {
                            t1 += s1[j];
                            f = false;
                        }
                    }
                    if (f == true)
                        t1 += t[i];
                    else
                        f = true;
                }
                textBox2.Clear();
                textBox2.Text += t1;
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox4.ScrollBars = ScrollBars.Vertical;
        }
 
        private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 newform = new Form2();
            newform.Show();
        }
 
        private void графикЧастотногоАнализаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 form = new Form3();
            form.Show();
            form.z1 = z1;
            form.g1 = g1;
            form.z2 = z2;
            form.g2 = g2;
        }
    }
}
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 12:40
Проверьте правильно ли заполняется словарь. Если не сложно выложите проект
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 12:56  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
Проверьте правильно ли заполняется словарь. Если не сложно выложите проект
ну мне сложно определить правильно ли это происходит но что работает все нормально это факт)
http://yadi.sk/d/9YSOc5S85Hlci
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 13:46
Запустил программу, ошибок ни одной не появилось.
0
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 13:51  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
Запустил программу, ошибок ни одной не появилось. Вложение 274666
я закомментил часть с присваиванием, ищи в форме 1
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 14:05
ты задаешь размер массивов = 31
C#
1
2
public char[] g2 = new char[31];
        public double[] z2 = new double[31];
а когда проходишь по словарю, то там 37 записей. Я 31 на 41 поменял для примера и ошибок нет
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 14:10  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
ты задаешь размер массивов = 31
C#
1
2
public char[] g2 = new char[31];
        public double[] z2 = new double[31];
а когда проходишь по словарю, то там 37 записей. Я 31 на 41 поменял для примера и ошибок нет
а почему нельзя написать так?
C#
1
2
public char[] g2;
public double[] z2;
0
 Аватар для N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86
29.05.2013, 14:23
Цитата Сообщение от satun Посмотреть сообщение
а почему нельзя написать так?
C#
1
2
public char[] g2;
public double[] z2;
перед обращением к элементам массива по индексу, необходимо его сначала инициализировать.

Добавлено через 8 минут
можно создать массивы не в начале метода, а после того, как словарь заполнен
C#
1
2
public char[] g2 = new char[dict.Count];
public double[] z2 = new double[dict.Count];
1
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
29.05.2013, 15:10  [ТС]
Цитата Сообщение от N!K Посмотреть сообщение
перед обращением к элементам массива по индексу, необходимо его сначала инициализировать.

Добавлено через 8 минут
можно создать массивы не в начале метода, а после того, как словарь заполнен
C#
1
2
public char[] g2 = new char[dict.Count];
public double[] z2 = new double[dict.Count];
у меня красным подчеркивает(паблик), так что если я создам то они будут только при заполнении существовать а мне их потом на другую форму вытащить надо будет

Добавлено через 6 минут
а ну если после... ну я так далеко не заглядывалxD
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2013, 15:10
Помогаю со студенческими работами здесь

Работа с классом, подразделы
Создаю класс для работы с памятью: class Engine { public static string Name { ...

Работа с классом Money
Помогите, пожалуйста :( 1.Реализовать определение нового класса (закрытые атрибуты, свойства, конструкторы, вывод атрибутов). Для...

Работа с классом Regex
Здравствуйте. Сейчас работаю с классом Regex и возникла следующая трудность: В txt файле у меня есть длинная строка следующего вида: ...

Работа с классом WebClient
Здравствуйте! Мне нужно передать программе исходный код некой web-страницы. Для этого решил использовать метод OpenRead класса WebClient. В...

Работа с классом Regex_2
Здравствуйте! Работа с классом Regex продолжается и сейчас я столкнулся со следующей трудностью: В txt файле у меня имеется строка...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru