![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Jkone |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
в общем,необходимо реализовать самый простой алгоритм сжатия без потерь,теорию я хорошо понимаю,но написать прогу не могу сам,так как опыта писать программы нет,пару раз писал простые программы на паскале и делфи и всё.нужна помощь,я не хочу чтобы за меня кто-нибудь писал прогу,прошу помощи с чего начать?
Добавлено @ 14:17 может дадите ссылку с исходником,чтобы было проще разобраться?а может кто уже писал? Добавлено @ 14:21 причём кодировать нужно просто файл с цепочкой символов,типа ффкккккеееевввввв ну и естественно декодировать,в общем без всяких наворотов,получается 2ф4к4е6в ![]() Это сообщение отредактировал(а) Jkone - 19.2.2008, 14:22 |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
??? без потерь чего? ZLib может просто будешь использовать? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Rennigth, думаю просто задача академическая.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Jkone |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
нет Zlib использовать нельзя,вообще как делать не могу понять,тут нужен массив?или просто нужно через строку писать,в смысле сравнивать символы,далее считать кол-во одинаковых символов и присвоить им какой-то счётчик?
но тогда вознивкает вопрос а как расшифровать,если у нас например строка числовая последовательность 222244444? то получается сжатая 4254,но а как тогда декодировать это обратно? зы называется так алгоритм без потерь Самый простой и очевидный метод сжатия – RLE (Run Length Encoding) – кодирование повторяющихся последовательностей симво-лов. Суть его в замене последовательности одинаковых символов во входном потоке флагом (признаком) кодированных данных, символом и количеством его повторений в выходном потоке. в общем помогите разобраться, в последующем хочу попробывать все простые алгоритмы реализовать(Хаффман,LZW и т.к.) |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
алгоритм без потерь информации
Чтобы правильно разжать 4254 в 222244444, надо заранее условиться, что всегда идёт один символ исх. текста, а потом его количество (ну или наборот). Чтобы из-за длинных цепочек неповторяющихся символов не разрастался сжатый файл (йцукен -> й1ц1у1к1е1н1), надо их сохранять одним блоком и выделить для этого отдкльный флаг (чтобы отличить его от сжатых данных) ну и плюс хранить его длину. Как хочешь, можно в памяти всё делать, можно из файла понемногу читать, и сразу в файл архива писать. Строка по большому счёту - это и есть массив, массив символов Это сообщение отредактировал(а) ksili - 20.2.2008, 07:33 -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |