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

Заполнить массив Double вероятностями

01.11.2016, 13:25. Показов 1230. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для рассчета Энтропии вводимого текста мне необходимо сделать массив с вероятностями появления в водимом тексте всех букв. Желательно убрать их этого массива нули для облегчения работы с ним.

Я уже написал часть кода, в котором в отдельный массив вносится колличество каждой буквы отдельно. Индексация букв не важна, код должен работать просто с цифрами без пояснения, т.к. задачи выводить энтропию для каждого символа отдельно нет.

Вот часть рабочего кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            //Первым делом я думаю стоит внести алфавит в виде массива из букв
            char[] ALPHA = new char[122] { 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', ' ', ',', '.', '!', '?', ';', '/', 'а', 'А', 'б', 'Б', 'в', 'В', 'г', 'Г', 'д', 'Д', 'е', 'Е', 'ё', 'Ё', 'ж', 'Ж', 'з', 'З', 'и', 'И', 'й', 'Й', 'к', 'К', 'л', 'Л', 'м', 'М', 'н', 'Н', 'о', 'О', 'п', 'П', 'р', 'Р', 'с', 'С', 'т', 'Т', 'у', 'У', 'ф', 'Ф', 'х', 'Х', 'ц', 'Ц', 'ч', 'Ч', 'ш', 'Ш', 'щ', 'Щ', 'ъ', 'ы', 'ь', 'э', 'Э', 'ю', 'Ю', 'я', 'Я' };
            //В составе алфавита 122 элемента
            int DLIN = ALPHA.Length;//длина масива с алфавитом
            char[] NOMER = new char[DLIN+1];//пока сам не понимаю зачем
            double[] VEROI;//добавим переменный массив для вероятностей
            string vvod = Console.ReadLine();//считывание с клавы
            int DLIN2 = vvod.Length;//длина введенного с клавы
            char[] VVOD = vvod.ToCharArray();//попытка замутить массив из букавок
            int[] BETHA = new int[122];
            //начинаем цикл подсчета букв
            for (int i = 0; i < BETHA.Length; i++) 
            {
                BETHA[i] = 0;
                for (int j = 0; j < DLIN2; j++)
                {
                    if (VVOD[j] == ALPHA[i])
                        BETHA[i]++;
                }
            }
            //конец цикла
Т.к. я ньюфаг и работаю с С# недавно, я специально для себя пишу столько комментариев.

А вот проблемная часть в которой у меня вопросы :
C#
1
2
3
4
5
6
7
8
9
10
11
12
            //новый цикл для вероятностей
            double DLIN3 = BETHA.Length;
            double[] BETA = BETHA.Select(x => Convert.ToDouble(x)).ToArray();
            double[] beta = BETA;
            beta = beta.Where((elem) => { return ((elem) == 0); }).ToArray();
 
 
            for (int i = 0; i < BETA.Length; i++)
            {
                if (BETA[i] > 0)
                    VEROI = (BETA[i] / DLIN3);
            }
Ругается он у меня на то, что не могу я Double[] делить на Double.
Прошу помощи в виде подсказок или исправления конкретного участка, спасибо!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2016, 13:25
Ответы с готовыми решениями:

Заполнить массив из 10 значений double по формуле
Ребят, помогите решить задачу. Я конечно новичок, но задачу решил. Помогите упростить код, кокой можно применить цикл? Заполнить...

Заполнить массив double случайными значениями
Кто может-пожалуйста помогите, вот код: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Нужно создать массив типа double и заполнить его псевдослучайными числами
Задание. С клавиатуры вводится число n - количество элементов массива. Нужно создать массив типа double и заполнить его псевдослучайными...

2
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
01.11.2016, 13:39
Heppymon,
C#
1
2
3
4
5
6
7
string s = "aabc";
double[] b = s
    .GroupBy(c => c)
    .Select(g => (double)g.Count() / s.Length)
    .ToArray();
 
double e = -b.Sum(bi => bi * Math.Log(bi, 2));
1
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 8
01.11.2016, 13:44  [ТС]
Спасибо большое, вставил, подогнал, работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2016, 13:44
Помогаю со студенческими работами здесь

Создать массив для 500 чисел типа double и заполнить его значениями
Помогите пожалуйста! Задание: Создать массив для 500 чисел типа double и заполнить его значениями с 1.5 и шагом 2.5!

Генерация чисел с разными вероятностями повтора
Задача на на первый взгляд простая) Но скажите как реализовать. Задаётся диапазон чисел допустим 0 и 1 т.есть в генерированной...

Преобразовать массив строк в массив double
здравствуйте! Собственно вопрос в заголовке пробовал convert.todouble(str) Double.parse(str) (double)(str) Добавлено через...

Преобразовать байтовый массив в массив double
Добрый день! пожалуйста, не кидайтесь сразу тапками. вопрос, собственно такой: есть байтовый массив byte arr = new byte {0x00, 0x00,...

2D массив String в 2D массив Double
Добрый день! Читаю файл, где находится массив 21 в высоту и 2 в ширину вида: Чтение и запись в строковый массив проходит...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru