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

Нужен код программы для кодировки методом ХафФмана - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите студенту завтра в 1 час http://www.cyberforum.ru/cpp-beginners/thread375095.html
Мне нужна помощ по легким задачам с++ оплата следует если кто заинтересован пишите скайп soslan15rus1
C++ Написать программу для игры "Камень, бумага, ножницы" Прочитал четыри главы книги Бьярне Страуструп Программирование: принципы и практика использования C++, исправленное издание и приступил делать и здание не получаеться это сделать не знаю почему??? может я не удачник. прошел в этиг главах циклы веторы и все. "Напишите программу для игры "Камень, бумага, ножницы". Если вы не знаете правил этой игры, попробуйте выяснить их у друзей или с помощью... http://www.cyberforum.ru/cpp-beginners/thread375094.html
Упорядочить столбцы матрицы по убыванию их характеристик C++ Builder
Характеристикой столбца целочисленной матрицы назовем сумму эле-ментов, являющихся простыми числами помогите пожалуйста написать если учитывать,что массив заполняется случ числами: void __fastcall TForm1::Button1Click(TObject *Sender) { StringGrid1->RowCount=StrToInt(Edit1->Text); StringGrid1->ColCount=StrToInt(Edit2->Text); {for(int i=0;i<StringGrid1->RowCount;i++) for (int...
C++ Битовое представление
Как можно получить любой файл в виде массива бит (именно бит, не байт) чтобы произвести непосредственно над каждым битом действие, и из выходной последовательности бит получить файл (не список бит в текстовом файле, а именно файл из этих бит).
C++ Перегрузка стандартных операций http://www.cyberforum.ru/cpp-beginners/thread375075.html
#include "stdafx.h" #include <iostream> #include <conio.h> #include <vector> using namespace std; const int n=3; int s=2; int k=0; int p=0; int f=k;
C++ Segmentation fault при использовании модуля <time.h> Есть код time_t now; struct tm * ptr; static char tbuf; bzero(tbuf,64); time(&now); ptr = localtime(&now); strftime(tbuf, 64, "%c ", ptr); На что вылезают предупреждения подробнее

Показать сообщение отдельно
Vlad_7
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 25
30.10.2011, 19:42     Нужен код программы для кодировки методом ХафФмана
Немного теории:
Дерево кодирования Хаффмена (Н-дерево) - двоичное дерево, у которого каждый узел имеет вес, и вес родителя равен суммарному весу его детей.

Классический алгоритм Хаффмена на входе получает таблицу частот встречаемости символов в сообщении. Далее на основании этой таблицы строится дерево кодирования Хаффмена (Н-дерево). Алгоритм построения Н-дерева прост и элегантен.
1. Символы входного алфавита образуют список свободных узлов. Каждый лист имеет вес, который может быть равен либо вероятности, либо количест¬ву вхождений символа в сжимаемое сообщение.
2. Выбираются два свободных узла дерева с наи¬меньшими весами.
3. Создается их родитель с весом, равным их сум¬марному весу.
4. Родитель добавляется в список свободных узлов, а двое его детей удаляются из этого списка.
5. Одной дуге, выходящей из родителя, ставится в соответствие бит 1, другой — бит 0.
6. Шаги, начиная со второго, повторяются до тех пор, пока в списке свободных узлов не останется только один свободный узел. Он и будет считаться корнем дерева.

Классический алгоритм Хаффмена имеет один су¬щественный недостаток. Для восстановления содер¬жимого сжатого сообщения декодер должен знать таб¬лицу частот, которой пользовался кодер. Следова¬тельно, длина сжатого сообщения увеличивается на длину таблицы частот, которая должна посылаться впереди данных, что может свести на нет все усилия по сжатию сообщения. Кроме того, необходимость на¬личия полной частотной статистики перед началом собственно кодирования требует двух проходов по со¬общению: одного для построения модели сообщения (таблицы частот и Н-дерева), другого для собственно кодирования.


Что должно быть в программе:
1.Вход программы: произвольный текстовый файл. Реализуйте только первую итерацию классического алгоритма. На первой итерации происходит построение модели данных: построение таблицы частот и Н-дерева.
2.Вывод программы: "таблица" кодов для каждого символа.
Если можно:
Код был с кометариями и не очень объёмен. А то я на С++ новичок
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru