Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2012, 20:58   #1
Tima-C
Новичок
Джуниор
 
Регистрация: 10.10.2012
Сообщений: 2
По умолчанию Энтропия Шенон

Я новичок в С++. Пишу программу подсчета энтропии текста по Шенону. Нужно открыть текстовый файл как бинарный и подсчитать энтропию текста. Для работы с файлом использовать функции cstdio. Алгоритм решения придумал такой:
1. Получаем с клавиатуры имя файла. Проверяем есть ли он и открываем для чтения в бинарном режиме.
2. Создаем массив float [255] куда будем записывать данные по частоте встречаемости символа в тексте. 255 - потому что 255 символов в кодировке.
3. Запускаем цикл. Будем перебирать все числа от 0 до 255 переводить в двоичную форму и искать совпадения с элементами текстового файла, таким образом подсчитаем количество каждого элемента.

Проблема вот в чем. Не получается организовать сравнение:
float* p=new float [255]; //Создаем массив для хранения данных
for (int i=0; i<255; i++)
{ bitset<8> w (i); //Переводим в двоичную систему
int chet=0;
while(feof(fr))
{(fread (&ch, sizeof (ch), 1, fr));
if (ch=w)

В последней строке выдает ошибку о не возможности приведения типов.
Может я в принципиально делаю что то не так... Дайте совет
Tima-C вне форума Ответить с цитированием
Старый 11.10.2012, 00:30   #2
Tima-C
Новичок
Джуниор
 
Регистрация: 10.10.2012
Сообщений: 2
По умолчанию

Похоже намутил я в алгоритме с двоичным кодом. Есть более простое решение с использованием getch(). Если получится, то выложу код сюда, может кому пригодится
Tima-C вне форума Ответить с цитированием
Старый 14.11.2012, 23:28   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

тебе удалось решить проблему по программе
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Теория информации. условная энтропия Alkagolik Помощь студентам 1 13.08.2011 12:17
Энтропия текста. Демик Помощь студентам 6 08.07.2011 19:33