Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Архиватор по алгоритму Хаффмана. Вопросы по реализации.  
:(
    Опции темы
Agito
Дата 5.12.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



Пишу архиватор по данному алгоритму на С#, однако возник ряд проблем. Есть ворох исходников Delphi, их в интернете полно, но во всех них реализация морально устарела, такое ощущение, что их делали копи-паст с паскаля и никто даже и не задумывался о применение ооп. Нормального, вменяемого, без всяких приблуд, исходника на C# не нашел. Проблема в том, читая теорию не удается ее сопоставить ни с одним исходником на Delphi, а на проверку всего этого дела уходит уйма времени, уж больно все неудобно сделано (как в исходнике, так и в самой среде разработки). 
Например, сейчас у меня все уперлось вот во что: частоты вхождений посчитал, дерево построил и начал вычислять битовые коды для большого файла.... длины кодов начали достигать 255 символов! - все правильно, в теории так и есть, но сколько исходников смотрю (даже тех, что прилагаются к теории)... там длины кодов не достигают даже 16 битов, никак не могу понять за счет чего это достигается.
Это одно, далее непонятно (даже если на все наплевать и брать длины до 255): как нам эти бытовые цепи сохранять в файл? ведь все битовое коды разной длины и их не запишешь в один байт. Например если бит код длиной в 1 символ или в 255... то есть все коды плюсовать и нарезать по 8 бит в байт или как?
В первую очередь хотелось бы услышать именно полезных ответов-советов, ну, а если есть исходник понятный, то и от него не откажусь. 

Это сообщение отредактировал(а) Agito - 5.12.2010, 10:43
PM MAIL   Вверх
Ky7m
Дата 5.12.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 8.4.2008

Репутация: 1
Всего: 2



Думаю вот пригодиться

Присоединённый файл ( Кол-во скачиваний: 135 )
Присоединённый файл  HuffmanStream.zip 273,54 Kb
PM MAIL ICQ   Вверх
KelTron
Дата 5.12.2010, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



Цитата(Agito @  5.12.2010,  10:42 Найти цитируемый пост)
никто даже и не задумывался о применение ооп

А зачем там ООП?
Цитата(Agito @  5.12.2010,  10:42 Найти цитируемый пост)
то есть все коды плюсовать и нарезать по 8 бит в байт или как?

Именно так




--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Agito
Дата 5.12.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



Цитата(Ky7m @ 5.12.2010,  12:10)
Думаю вот пригодиться

Глянул, понял, что на разбор опять же надо много времени, ибо серьезный класс написан, подожду может кто подкинет еще идей, а так все равно спасибо! В крайнем случае использую.

Добавлено через 7 минут и 44 секунды
Цитата(KelTron @ 5.12.2010,  12:42)
Цитата(Agito @  5.12.2010,  10:42 Найти цитируемый пост)
никто даже и не задумывался о применение ооп

А зачем там ООП?

Хм, странный вопрос smile. Даже не знаю тут как сказать... проще же узлы хранить в виде объектов, которые являются ссылочном типом, чем, скажем, в структурах, где постоянно придется использовать обращение к "куче", то есть постоянно придется использовать вспомогательный оператор (не помню как он в С# выглядит), а это лишний код и затруднение восприятия кода.
PM MAIL   Вверх
KelTron
Дата 5.12.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



Цитата(Agito @  5.12.2010,  12:58 Найти цитируемый пост)
проще же узлы хранить в виде объектов, которые являются ссылочном типом

То что узел будет реализован в виде структуры или класса, ещё не значит, что это ООП.

Цитата(Agito @  5.12.2010,  12:58 Найти цитируемый пост)
в структурах, где постоянно придется использовать обращение к "куче"

Структуры как раз хранятся в стеке, а классы в куче.

Цитата(Agito @  5.12.2010,  12:58 Найти цитируемый пост)
то есть постоянно придется использовать вспомогательный оператор

Какой ещё оператор?) Хотелось бы взглянуть на это мифическое чудо.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.