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

Алгоритм Хаффмана, реализация через структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стандартные потоки http://www.cyberforum.ru/cpp-beginners/thread733889.html
1. Определить класс с именем TRAIN, содержащую следующие поля:  название пункта назначения;  номер поезда  время отправления  определить методы доступа к этим полям и перегруженные операции...
C++ Определите количество гласных букв в слове Помогите создать программу: Задание: 1.Определите количество гласных букв в слове. 2.Между двумя одинаковыми буквами в слове вставьте " - ". 3.Вычеркните из слова сочетание " при ". http://www.cyberforum.ru/cpp-beginners/thread733854.html
ошибка в синтаксисе? C++
Скомпелировано в сlr:oldSyntax на VS2010. Жалуется на синтаксис: Предупреждение 1 warning D9035: использование параметра "clr:oldsyntax" нежелательно, он будет удален в следующих...
C++ Создать класс «Сотрудники предприятия»
Создать класс «Сотрудники предприятия», включающий следующие поля: наименование предприятия и обобщенную коллекцию экземпляров класса «Сотрудник», методы ввода и вывода данных , а также методы работы...
C++ Игра в НИМ (доработать код) http://www.cyberforum.ru/cpp-beginners/thread733851.html
Игра в НИМ. Правила игры: 1. В начале игры в каждой из n кучек находится отличное от 0 количество каких – то предметов (например, спички); 2. два игрока ходят по очереди. За один ход разрешается...
C++ Составить программу для нахождения суммы Здравствуйте! Помогите написать парочку программ... 1. Составить блок-схему и программу нахождения суммы удвоенных чётных чисел в интервале от 15 до 90. подробнее

Показать сообщение отдельно
RealShady911
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 2
16.12.2012, 23:09
Немного поделал еще, стало выходить более толково, но опять же явная ошибка, потому что сжатое сообщение превышало бы изначальное в объеме раз так в 15 )))
Если кто найдет косяк буду очень благодарен, а то я уже запарился совсем.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
haffman m1, m2;
 
m1 = HAF[0];
m2 = HAF[0];
 
for (int i = 0; i < 256; i++)
if (m1.Freq >= HAF[i].Freq)
m1 = HAF[i];
 
for (int i = 0; i < 256; i++)
if (m2.Freq >= HAF[i].Freq)
if (HAF[i].Num != m1.Num)
m2 = HAF[i];
 
HAFFMAN:
 
for (int i = 0; i <= m1.Pos; i++)
{
HAF[m1.Num - i].Code[HAF[m1.Num - i].Pos] = '0';
HAF[m1.Num - i].Pos++;
}
 
for (int i = 0; i <= (m2.Pos); i++)
{
HAF[m2.Num - i].Code[HAF[m2.Num - i].Pos] = '1';
HAF[m2.Num - i].Pos++;    
}
 
for (int i = 0; i <= m1.Pos; i++)
HAF[m1.Num - i].Freq = HAF[m1.Num - i].FreqStatic;
 
for (int i = 0; i <= m2.Pos; i++)
HAF[m2.Num - i].Freq = HAF[m2.Num - i].FreqStatic;
 
int i = 1;
 
while (i <= (m1.Pos))
{
HAF[m1.Num].Freq = HAF[m1.Num].Freq + HAF[m1.Num - i].Freq;
i++;
}
 
i = 1;
 
while (i <= m2.Pos)
{
HAF[m2.Num].Freq = HAF[m2.Num].Freq + HAF[m2.Num - i].Freq;
i++;
}
 
HAF[m1.Num].Freq = HAF[m1.Num].Freq + HAF[m2.Num].Freq;
HAF[m2.Num].Freq = HAF[m1.Num].Freq;
 
i = 1;
 
while (i <= (m1.Pos))
{
HAF[m1.Num - i].Freq = HAF[m1.Num].Freq;
i++;
}
 
i = 1;
 
while (i <= m2.Pos)
{
HAF[m2.Num - i].Freq = HAF[m2.Num].Freq;
i++;
}
 
m1.Freq = HAF[m1.Num].Freq;
m2.Freq = HAF[m2.Num].Freq;
 
for (int i = 0; i < 256; i++)
if (m1.Freq >= HAF[i].Freq)
m1 = HAF[i];
 
for (int i = 0; i < 256; i++)
if (m2.Freq >= HAF[i].Freq)
if (HAF[i].Num != m1.Num)
m2 = HAF[i];
 
if (size > (m1.Freq + m2.Freq))
 
goto HAFFMAN;
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.