Описание на алгоритъма на задача 1 - Компресия: (от
Любомир Славилов) |
|
CODE.EXE
1. Като за начало програмата чете информацията от входния файл и я запомня в символен
масив, след което на базата на числото от първя ред на входния файл се прави бърз
анализ на отделните блокове 32х32 бита които съответстват на повтарящи се цифри...
Ако блоковете не се отличават с повече от 16 бита на мястото на цифрата която се
повтарая се поставя котва към базов блок от данни...
2. Следващата стъпка е същинската компресия по метода DRLE (Double Random Length
Encoding), който е модифицирана версия на RLE, т.е. на всяка поредица от нули или
единици се съпоставя число, което в случая е шест битово, като само пет от тях са
значещи а шестия е запазен за знак...( 100100 = -4 = '11111'; ; 000111 = 7 = '00000000'
);
3. Следва 'SEB' конвертиране, което на поредица от четири шестбитови числа, съпоставя
поредица от три осембитови числа, за да стане възможно записването на байтове без
излишно увеличаване на информационния обем...
4. Получения масив от байтове се записва във файла NUM.COD
DECODE.EXE
1. От входния файл се снема прототипите описващи състоянието на даните и по важното
- котвите, както и няколко байта (не повече от три) които са остатъче продукт от
SEB конвертирането.
2. Структурата от данни се подлага на ESB конвертиране, която на всяка поредица
от три осембитови числа съпоставя поредица от четири шестбитови числа.
3. Следва обратно DRLE, което на всяко число съпоставя поредица нули или поредица
еденици.
4. Запис на файла NUM.OUT |
За въпроси можете да ни пишете на адрес: konkurs@musala.com.
Supported by Musala Soft Ltd.
Copyright 2000-2010 by Musala Soft Ltd. All rights reserved.
|
|