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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2011, 13:40   #1
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию Энтропия текста.

Здравствуйте. Сразу говорю, я не прошу вас написать код за меня. Я лишь прошу помощи в непонятных мне вопросах).
Вот мое задание(просто для ознакомления):
Составить программу на языке C/С++ определения кол-ва и наличия букв русского алфавита в тексте, записанном в файл. Определить энтропию этого текста. Построить гистограмму распределения букв.

Подскажите что такое энтропия текста и как её определять?? И как проще всего реализовать подсчет букв алфавита?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 08.07.2011, 14:39   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Демик Посмотреть сообщение
Подскажите что такое энтропия текста и как её определять?
wiki/Информационная_энтропия
Цитата:
Сообщение от Демик Посмотреть сообщение
И как проще всего реализовать подсчет букв алфавита?
Функция проверки символа на принадлежность русскому алфавиту + цикл со счетчиком.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 08.07.2011, 14:54   #3
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Почитал, понял теперь для чего это нужно, но так и не понял как перевести приведенную там формулу в нужную мне(

Подскажите пожалуйста, как вот эту формулу представить на языке С++:
f( p1, p2 , …, pn ) = сумма от 1 до n pi * log2 1/pi
Злостный анимешнег =^.^=

Последний раз редактировалось Stilet; 08.07.2011 в 20:01.
Демик вне форума Ответить с цитированием
Старый 08.07.2011, 17:05   #4
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Можно так:

Код:
#include <math.h>

double getf(int p[n])
{
double f=0;
for (int i=1;i<=n;i++)
{ 
 f+=p[i-1]*(log(1/p[i-1])/log(2));
}
 return f;
}
l1pton17 вне форума Ответить с цитированием
Старый 08.07.2011, 17:46   #5
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Цитата:
Сообщение от l1pton17 Посмотреть сообщение
Можно так:

Код:
#include <math.h>

double getf(int p[n])\\ это ты создаешь свою функцию?
{
double f=0;\\а-это энтропия, да?
for (int i=1;i<=n;i++)
{ 
 f+=p[i-1]*(log(1/p[i-1])/log(2));
}
 return f;
}
И ещё, сколько раз читал про функции, но так и не смог научиться правильно передавать параметры)
Так будет правильно?
Код:
char p[33]={'a','b',...,'z'};

getf(char p[33]);
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 08.07.2011, 18:03   #6
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Код:
double getf(int *p)\\ это ты создаешь свою функцию? да
{
double f=0;\\а-это энтропия, да? скорее всего
for (int i=1;i<=n;i++)
{ 
 f+=p[i-1]*(log(1/p[i-1])/log(2));
}
 return f;
}
и использовать так:

Код:
int main()
{
 const int n=33;
 int *p=malloc(n*sizeof(int));
 /*заполняешь p*/
 getf(p);
}
l1pton17 вне форума Ответить с цитированием
Старый 08.07.2011, 19:33   #7
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

l1pton17, благодарю за помощь) дальше как нибудь сам)
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дублирование текста (автозамена текста) Level Microsoft Office Word 6 24.05.2011 09:36
Выбор последнего записанного текста (именно текста а не значения) из соседнего листа Uralmaster Microsoft Office Excel 1 28.01.2011 21:06
Генератор текста, Анализатор текста, График, С++ darel Помощь студентам 0 14.03.2010 20:15
Выравнивание текста SeregaIRK Общие вопросы Delphi 4 21.07.2008 15:17