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

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

Войти
Регистрация
Восстановить пароль
 
rozochka90
0 / 0 / 0
Регистрация: 14.09.2011
Сообщений: 20
#1

не могу найти ошибку в кодировании Хаффмана - C++

12.03.2012, 17:53. Просмотров 253. Ответов 0
Метки нет (Все метки)

занимаюсь сжатием Jpeg написала почти все, теперь начинаю проверять на программе JPEGsnoop
с помощью МОЕЙ программы строю дерево хаффмана для значений
Код
int **MASS_DEREVO_Diff_CrCb;
	MASS_DEREVO_Diff_CrCb = new int *[kol_vo_Diff_CrCb];
	for(k_huf=0; k_huf<3; k_huf++)
	{
		MASS_DEREVO_Diff_CrCb[k_huf]= new int[kol_vo_Diff_CrCb];
	}
				
	int znach_kod_Diff_CrCb;			
	kod_Diff_CrCb = 0;
	int f1_Diff_CrCb = 0;
	int dlina_koda_Diff_CrCb = 0;
	l_huf = 0;				
	x_huf=0;
				
	int i_huf_Diff_CrCb;				
	int j_huf_Diff_CrCb;				
	int k_huf_Diff_CrCb;								
				
	if(kolvo_znachenii_Diff_CrCb==1)
	{
		MASS_DEREVO_Diff_CrCb[0][l_huf] = sootv_Diff_CrCb[x_huf].znachen_Diff_CrCb;
		MASS_DEREVO_Diff_CrCb[1][l_huf] = kod_Diff_CrCb;
		MASS_DEREVO_Diff_CrCb[2][l_huf] = 1;						
	}
	else
	{
		for(i_huf_Diff_CrCb=0; i_huf_Diff_CrCb<nomer_yzla_Diff_CrCb; i_huf_Diff_CrCb++)
		{		
			if(uzel_Diff_CrCb[i_huf_Diff_CrCb]->prev_0_Diff_CrCb==NULL, uzel_Diff_CrCb[i_huf_Diff_CrCb]->prev_1_Diff_CrCb==NULL)
			{			
				for (j_huf_Diff_CrCb=i_huf_Diff_CrCb; j_huf_Diff_CrCb<nomer_yzla_Diff_CrCb; j_huf_Diff_CrCb++)
				{
					for (k_huf_Diff_CrCb=i_huf_Diff_CrCb; k_huf_Diff_CrCb<nomer_yzla_Diff_CrCb; k_huf_Diff_CrCb++)
					{
						if(uzel_Diff_CrCb[j_huf_Diff_CrCb]->next_0_Diff_CrCb!=NULL)
						{
							if(uzel_Diff_CrCb[k_huf_Diff_CrCb] == uzel_Diff_CrCb[j_huf_Diff_CrCb]->next_0_Diff_CrCb)
							{
								znach_kod_Diff_CrCb = 0;
								kod_Diff_CrCb=(kod_Diff_CrCb|(znach_kod_Diff_CrCb<<dlina_koda_Diff_CrCb));								
								f1_Diff_CrCb++;	
								dlina_koda_Diff_CrCb++;
								j_huf_Diff_CrCb=k_huf_Diff_CrCb;
							}
						}
						if(uzel_Diff_CrCb[j_huf_Diff_CrCb]->next_1_Diff_CrCb!=NULL)
						{
							if(uzel_Diff_CrCb[k_huf_Diff_CrCb] == uzel_Diff_CrCb[j_huf_Diff_CrCb]->next_1_Diff_CrCb)
							{
								znach_kod_Diff_CrCb = 1;
								kod_Diff_CrCb=(kod_Diff_CrCb|(znach_kod_Diff_CrCb<<dlina_koda_Diff_CrCb));													
								f1_Diff_CrCb++;
								dlina_koda_Diff_CrCb++;
								j_huf_Diff_CrCb=k_huf_Diff_CrCb;							
							}
						}
					}							
					MASS_DEREVO_Diff_CrCb[0][l_huf] = sootv_Diff_CrCb[x_huf].znachen_Diff_CrCb;
					MASS_DEREVO_Diff_CrCb[1][l_huf] = kod_Diff_CrCb;
					MASS_DEREVO_Diff_CrCb[2][l_huf] = dlina_koda_Diff_CrCb;							
					dlina_koda_Diff_CrCb=0;
					l_huf++;
					x_huf++;
					kod_Diff_CrCb=0;
				}
			}
		}
	}
113-----------------------------------------------------------126
2-----------4---------------------------------8--------13----
2-----3----------------5-------------------------------
1-----
1----2-----------------
1----
1---2-------------4---------------------------
1---
1--2--------------
1--
1-2---------
1-

получается что для
113 код 1
2 код 0000
2 код 0001
1 код 0010
1 код 0011
1 код 0100
1 код 01010
1 код 01011
1 код 01100
1 код 01101
1 код 01110
1 код 01111


а в программе JPEGsnoop получаются коды вместо первых нулей -единицы и код для 113 - 0...что делать? вот тут лежит картинка над которой я работаю...я так полагаю что она не открывается потому что у меня неправильно закодировано дерево и записано в файл jpeg :http://zalil.ru/32862746
пожалуйста, не поленитесь скачать программу JPEGsnoop и может чем-нибудь поможете! большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не могу найти ошибку в кодировании Хаффмана (C++):

Построение дерева в кодировании Хаффмана - C++
Написал код, который строит дерево Хаффмана, но ветви этого дерева у меня получаются разные(т.е. построение происходит не оптимально). ...

Кто-нибудь найдите ошибку в RSA кодировании!!! - C++
Стандартная задача. Вводятся p,q, e, d. Нужно по формуле ks=ks*c*Mod n, где n=p*q, c-ASCII код симвода. загвоздка в том что текста вводится...

Подскажите ошибку в реализации алгоритма Хаффмана - C++
при архивации txt файла проблем не возникает, но со всеми остальными (например: png,doc,exe,docx и т.д.) он не работает, подскажите что не...

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...

Не могу найти ошибку - C++
ошибка в строке 24..не могу исправить. Помогите, пожалуйста. #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using...

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

Не могу найти ошибку - C++
w-Слово.CustomAlphabet-Буквы на которые не заканчиваются слова. Не получается предпоследнюю букву вернуть(возвращает последнюю). string...

Не могу найти ошибку! - C++
Пробую что-то вычудить..... не могу найти ошибку (просто интересно) #include &lt;iostream&gt; using namespace std; ...

Не могу найти ошибку... - C++
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Я ввожу матрицу 1 2 3 4 5 6 7 8 9, т.е. минимум...

Не могу найти ошибку - C++
Здравствуйте,столкнулся с такой проблемой ,нужно было написать программу,которая определяет количество элементов,которые находятся в...


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

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

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