Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Evgeniy_Fox
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 178
1

Сортировка по убыванию данных по относительной частоте

22.04.2014, 08:27. Просмотров 963. Ответов 6
Метки нет (Все метки)

Друзья, как выполнить сортировку по убыванию поступивших в richTextBox2 данных по относительной частоте? Т.е. по убыванию встречающихся символов?
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = richTextBox1.Text;
            var x = from c in s
                    group c by c into g
                    let count = g.Count()
                    orderby g.Key ascending
                    select new
                    {
                        Value = g.Key,
                        Count = count,
 
                    };
            richTextBox2.Clear();
            richTextBox2.Text = "Cимвол: " + "  " + "Частота" + "  " + "Отн. частота" + "    " + "\n\r";
            foreach (var count in x)
            {
 
                double a = Convert.ToDouble(count.Count) / s.Length;
                a = Math.Round(a, 5);
                double b = Math.Round(-1 * a * Math.Log(a, 2), 5);
                richTextBox2.Text += "    " + count.Value + "                     " + count.Count + "          " + a + "\n\r";
            }
        }
    }
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 08:27
Ответы с готовыми решениями:

Сортировка данных в combobox по убыванию
Помогите в решение проблемы. Список в combobox подливается из файла. Мне нужно что бы этот список...

Сортировка данных в combobox по убыванию
Помогите в решение проблемы. Список в combobox подливается из файла. Мне нужно что бы этот список...

Сортировка по частоте записей
Доброго времени суток. Возникла проблема с сортировкой по частоте записей в DATAGRIDWIEW или просто...

Сортировка символов по частоте
Подскажите, пожалуйста, правильно ли я делаю сортировку символов по частоте в порядке убывания? ...

Подскажите: сортировка слов по частоте
Здравствуйте.. Объясните пожалуйста, что делает данная строка sortedD = sorted(d.items(),...

6
Spawn
980 / 878 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 09:00 2
Цитата Сообщение от Evgeniy_Fox Посмотреть сообщение
orderby g.Key ascending
Сортируете Вы по ключу, который является символом, а хотите по частоте, так почему не по Count сортируете? С ключевым словом descending к тому же надо будет, так как по-убыванию.
1
Evgeniy_Fox
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 178
22.04.2014, 10:32  [ТС] 3
Spawn, сможешь изменить?
0
Spawn
980 / 878 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 10:48 4
C#
1
2
3
4
5
6
7
8
9
10
            string s = "gjsdkfjkf jfldksfklsdj klsdjflkdsfjkdsl jmfsldm jlfmsdjlk fksdljfsdklfjk ldsjfsldkm ks";
            List<KeyValuePair<char, int>> dict = 
               // группируем по символам
               s.GroupBy(g => g)
               // собираем в уникальные пары: ключ - количество
                .Select(g => new KeyValuePair<char, int>(g.Key, g.Count()))
               // сортируем по-убыванию по количеству
                .OrderByDescending(g => g.Value)
               // выводим в список
                .ToList();
1
Evgeniy_Fox
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 178
22.04.2014, 11:04  [ТС] 5
Понять не могу, куда Ваш код вставить.
И так:
Цитата Сообщение от Spawn Посмотреть сообщение
C#
1
string s = "gjsdkfjkf jfldksfklsdj klsdjflkdsfjkdsl jmfsldm jlfmsdjlk fksdljfsdklfjk ldsjfsldkm ks";
тут у меня
C#
1
string s = richTextBox1.Text;
, т.к. данные вводятся в бокс. Тут всё понятно.
С выводом не могу разобраться, мне результат нужно вывести в textbox2.
0
Spawn
980 / 878 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 11:09 6
Лучший ответ Сообщение было отмечено Evgeniy_Fox как решение

Решение

C#
1
2
3
4
5
6
            string s = "gjsdkfjkf jfldksfklsdj klsdjflkdsfjkdsl jmfsldm jlfmsdjlk fksdljfsdklfjk ldsjfsldkm ks";
 
            string result = "";
            var dict = s.GroupBy(g => g).Select(g => new KeyValuePair<char, double>(g.Key, g.Count())).OrderByDescending(g => g.Value);
            foreach (var itm in dict)
                result += String.Format("Символ: {0}. Частота: {1}. Отн. частота: {2:P}.\r\n", itm.Key, itm.Value, itm.Value / (double)s.Length);
1
Evgeniy_Fox
8 / 8 / 3
Регистрация: 22.09.2012
Сообщений: 178
22.04.2014, 11:17  [ТС] 7
Спасибо
0
22.04.2014, 11:17
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 11:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Комплексная сортировка по частоте и алфавиту
Всем привет :) Есть программа... #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt;...

Сортировка символов в строке по частоте их встречаемости
Помогите разобраться с кодом. Ошибка возникает на этапе суммирования частоты встречаемости...

Clojure Сортировка атомов списка по частоте появления
Помогите решить задачу: Есть список атомов. Написать программу, возвращающую список вида: первый...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.