Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
propels
#1

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

09.01.2014, 20:51. Просмотров 186. Ответов 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++
декодирование у меня есть я как бы среднячок, но сама написать не осилю)

Как реализовать кодирование кода Хэмминга? - C++
Подскажите пожалуйста как реализовать кодирование кода Хэмминга на C++?

Кодирование по Хаффману - C#
Кто умеет кодировать по Хаффману?!

Архивация по Хаффману - Turbo Pascal
Есть такая задачка: Напишите архиватор, который рассматривает любой входной файл как последовательность байтов и сжимает его,...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать - Delphi
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива и сумму элементов массива,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 20:51
Привет! Вот еще темы с ответами:

Как реализовать кодирование и декодирование методом Хаффмана - C#
Курсовой проект на тему &quot;Кодирование и декодирование методом Хаффмана&quot;. Я прочитала всю теорию, в чем смысл, поняла. Но я туго представляю,...

Как получить бинарное представление видео-файла (Кодирование видеофайла) - C#
Всем привет. У меня такой вопрос: если любая информация может быть представляна в двоичном виде, то как получить бинарное представление...

Mozilla firefox не очищает куки как следует. Как разобраться? - Софт
Заметил что мозилла 5 полностью не удаляет куки. К примеру сидишь на сайте под своим профилем (вкoнтaктe). При удаление куки,кэша и т.д...

Как вообще разобраться,как работать с линукс? Есть книги и т.п? - Debian Linux
Как вообще разобраться,как работать с линукс? Есть книги и т.п? Я не знаю,как и cmd windows работать. Есть ли отдельные книги по этому? И...


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

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

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