0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 6
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Архиватор на основе алгоритма Хаффмана22.06.2019, 12:06. Показов 4498. Ответов 6
Добрый день. Написал программу архивирования и разархивирования файлов на основе алгоритма Хаффмана. Вся информация об архивировании (имя файла, его дерево и словарь) храню в начале заархивированного файла. дерево хранится в виде D (спускаемся вниз и влево) и U(поднимаемся вверх и если правого узла нет то вниз вправо) символов.
На маленьких текстовых файлах все работает, но если размер увеличивается, то возникают ошибки. Например файл текстовый размером 6 Кб выбивает ошибку в unpacking.h в 56 строке "System.NullReferenceException: 'Ссылка на объект не указывает на экземпляр объекта.'" У меня 2 версии: 1) Либо я неправильно считываю все байты из исходного файла и они не пишутся в словарь 2) Либо неправильно строю дерево при распаковке Заранее спасибо за помощь Node.h
0
|
|
22.06.2019, 12:06 | |
Ответы с готовыми решениями:
6
Написать архиватор на основе метода Хаффмана
Оптимизация алгоритма Хаффмана Кодирование алгоритма Хаффмана |
6577 / 4562 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
23.06.2019, 10:43 | 2 |
0
|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 6
|
|
23.06.2019, 13:01 [ТС] | 3 |
Мелкие файлы все созданы мной, побольше я просто нашел .txt файлы на компьютере у себя (логи, например). Но предполагается, что этот архиватор должен работать на любых форматах файлов. Сам то файл открываю я в бинарном виде.
0
|
6577 / 4562 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
23.06.2019, 13:42 | 4 |
Имелась ввиду распаковка
Добавлено через 2 минуты Но, в любом случае - в функции Unzip::unzipping, в цикле while (!inp.eof()) { не вижу проверки, что p->left ИЛИ p->right равно null
0
|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 6
|
|
23.06.2019, 18:27 [ТС] | 5 |
0
|
6577 / 4562 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
23.06.2019, 18:37 | 6 |
Может здесь всё-таки нужно добавить проверку p - if (!p || (p->left == NULL && p->right == NULL))?
0
|
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 6
|
|
23.06.2019, 22:43 [ТС] | 7 |
тогда какой символ писать, если "p" не существует? Ведь алгоритм идет по ветвям: если 0 - налево, 1 - направо и в конце концов все заканчивается узлом, в котором есть символ. Получается, что все-таки проблема в построении дерева у меня, либо по какой то причине не записывается символ в конечную ветку.
0
|
23.06.2019, 22:43 | |
Помогаю со студенческими работами здесь
7
Архиватор на основе алгоритма Хаффмана, помогите разобрать код. Архиватор , в основе которого будет лежать алгоритм Хаффмана Реализовать свой собственный архиватор по алгоритму хаффмана Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |