Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
propels
Сообщений: n/a
#1

Как разобраться? Кодирование по Хаффману( - C++

09.01.2014, 20:51. Просмотров 177. Ответов 0
Метки нет (Все метки)

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
void    getmin2(int n, int *i1, int *i2) //нахождение двух минимальных частот
//в неиспользованных узлах метода Хаффмана
{
 int    i, min1, min2;
 
 *i1=*i2=-1;
 for (i=0,min1=min2=1000000;i<n;i++) 
  if (!uses[i]) //данный узел еще не использовался
   if (frs[i]<=min1) { //частота узла меньше или равна первого минимума
    *i2=*i1;    //текущий первый минимум делаем вторым
    min2=min1;
    *i1=i;      //запоминаем индекс и значение нового первого минимума
    min1=frs[i];
   }
   else
    if (frs[i]<min2) { //найден новый второй минимум 
     *i2=i;     //запоминаем индекс и значение нового второго минимума
     min2=frs[i];
    }
}
 
void    getbinarycode(char *dstptr, int l, int c) //построение символьного вида кода c длиной l
{
 int f;
 
 dstptr+=l;
 *dstptr--=0;
 for (f=1;l;f<<=1,l--) *dstptr--=(c&f)?'1':'0';
}
 
void    getcode(int i, int l, int c) //рекурсивная процедура формирования кода Хаффмана
{
 int    j;
 
 if ((j=nodes[i][0])<nsymbol) {//левый потомок узла соответствует входному символу
  codes[j]=c<<1; //дописываем 0 к конецу кода
  lens[j]=l+1; //увеличиваем длину кода на 1
 }
 else //продолжаем формирование кода из левого потомка узла j, увеличив длину кода на 1 и дописав к концу кода 0
  getcode(j,l+1,c<<1);
 c=(c<<1)|1; //дописываем 1 к концу кода
 l++; //увеличиваем длину кода на 1
 if ((j=nodes[i][1])<nsymbol) {//правый потомок соответствует входному символу
  codes[j]=c; //записываем код
  lens[j]=l;  //и длину
 }
 else
  getcode(j,l,c); //продолжаем формирование кода из правого потомка узла j
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 20:51     Как разобраться? Кодирование по Хаффману(
Посмотрите здесь:

Кодирование по Хаффману, C++ - C++
Закодируйте какой-нибудь символьный массив по Хаффману примера ради.

Ребятушки, у кого-ниудь есть алгоритм кодирования и декодирования по Хаффману? - C++
декодирование у меня есть я как бы среднячок, но сама написать не осилю)

как разобраться с задачей - C++
Кто знает и умеет напишите пожалуйста программный код задачи на языке С++. Дан массив 4х6! 6 студентов и 4 предмета! Определить...

Как разобраться с компилятором? - C++
Добрый вечер. Хочу попробовать себя в области программирования С ++, скачала книги для самостоятельного изучения, но в них подробно...

Как разобраться с regex - C++
Всем привет. Использую regex_search и хочу, чтобы он не зависел от регистра. Нашел такую штуку, но не могу понять, как это сделать: ...

как разобраться с формулой - C++
{deleted} П.5.19.Правил Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.

Как разобраться с ошибками в коде - C++
Помогите пожалуйста разобраться с ошибками в коде вот код: #include &lt;iostream.h&gt; #include &lt;string.h&gt; int main () { ...

Не могу разобраться как работает код - C++
#define HUGE 10000 char st; int dyn; int min(int a, int b) { if (a &gt; b) return a; else

Не могу разобраться, как работает программа? - C++
Исходники программы, которая решает пятнашки. Пока были функции, было просто, но потом пошли классы, и непонятно, что выполняется, какой...

Не могу разобраться,как переделать программу! !! - C++
Ребят,помогите кто может) у меня такая проблема... Я написал задачу,она работает и всё нормально,но мне нада её переделать так,чтобы она...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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