Предложения по конкретизации.
Данная программа работает из
командной строки :
Запустив исполняемый файл ,
пользователь получает инструкцию по использованию
Примечание:
при вводе команды (кодировать
декодировать) : 1) между командой входящим и результирующим файлом ставить
пробел ; 2)имена и расширения файлов разделяют точкой ;
Также во избежание некорректной работы программы
желательно указывать полный путь к оперируемым файлам
Пример использования программы :
Сжимаем расжимаем файл , находясь в папке с
программой :
D:USERS>vic a c:foldermyfile.*
c:foldermyfile1.*
Где :
vic – программа.exe
myfile.* , myfile1.* входящий и результирующий
файлы соответственно
команда сжатия <а> ; распаковки <е>
Курсовая работа
По алг. яз. и программированию
Булгаков Виктор Викторович
ПО – 21
Лист
3
1. Описание используемых типов данных.
В программе используются данных
описанные в модуле “vic.cpp”:
// Количество битов в регистре
#define BITS_IN_REGISTER 16
// Максимально возможное значение в регистре
#define TOP_VALUE (((long) 1 <<
BITS_IN_REGISTER) - 1)
// Диапазоны
#define FIRST_QTR (TOP_VALUE / 4 + 1)
#define HALF (2 * FIRST_QTR)
#define THIRD_QTR (3 * FIRST_QTR)
// Количество символов
алфавита
#define NO_OF_CHARS
256
// Специальный символ КонецФайла
#define EOF_SYMBOL (NO_OF_CHARS + 1)
// Всего символов в модели
#define NO_OF_SYMBOLS (NO_OF_CHARS + 1)
// Порог частоты для масштабирования
#define MAX_FREQUENCY 16383
// Таблицы перекодировки
unsigned char index_to_char
[NO_OF_SYMBOLS];
int char_to_index
[NO_OF_CHARS];
// Таблицы частот
int cum_freq [NO_OF_SYMBOLS +
1];
int freq [NO_OF_SYMBOLS + 1];
// Регистры границ и кода
long low, high;
long value;
// Поддержка побитлвых операций с файлами
long bits_to_follow;
int buffer;
int bits_to_go;
int garbage_bits;
// Обрабатываемые файлы
File in,out
Курсовая работа
По алг. яз. и программированию
Булгаков Виктор Викторович
ПО – 21
2. Описание структуры программного
продукта.
Программный продукт включает 1
файл:
‘vic.exe’ – основная программа;
‘vic.cpp’ – модуль, в котором содержатся описания
используемых в программе типов данных и объявлены необходимые переменные :
Курсовая работа
По алг. яз. и программированию
Булгаков Виктор Викторович
ПО – 21
Разработанные процедуры и функции.
Модуль ‘vic.cpp’.
void start_model (void)
Инициализация адаптивной модели
Обновление модели очередным символом
void update_model ( int symbol)
проверка на переполнение счетчика частоты
if (cum_freq [0] == MAX_FREQUENCY)
масштабирование частот при переполнении
for ( i = NO_OF_SYMBOLS; i >= 0; i--)
Инициализация побитового ввода
void start_inputing_bits (void)
Ввод очередного бита сжатой информации
int input_bit (void)
Инициализация побитового вывода
void start_outputing_bits
(void)
Вывод очередного бита сжатой информации
void output_bit ( int bit)
Очистка буфера побитового вывода
void done_outputing_bits (void)
Вывод указанного бита и отложенных ранее
void output_bit_plus_follow ( int bit)
Инициализация регистров границ и кода перед началом сжатия
void start_encoding (void)
Очистка побитового вывода
void done_encoding (void)
Загрузка начала сжатого сообщения
void start_decoding (void)
Кодирование очередного символа
void encode_symbol ( int symbol)
пересчет значений границ
range = (long) (high - low) + 1;
Декодирование очередного символа
int decode_symbol (void)
арифметическое кодирование
void encode ( char *infile, char *outfile)
арифметическое декодирование
void decode ( char *infile, char *outfile)
Головная процедура
void main ( int argc, char **argv)