Утиліта стискання файлів за алгоритмом арифметичного кодування

Автор работы: Пользователь скрыл имя, 12 Января 2014 в 01:29, курсовая работа

Краткое описание

Написати програму, яка реалізує алгоритм арифметичного кодування-декодування, що виконує стиснення інформації. На вході програма повинна отримати файл, а на виході цей файл повинен бути закодованим. Також реалізувати декодування цього файлу. Порівняти ефективність стиснення з різними форматами файлів. Програма має виконувати такі функції:
надавати користувачу можливість кодувати та декодувати файли;
забезпечити максимальну надійність при кодуванні та декодуванні;
надавати можливість порівняння кодованого та декодованого файлу;

Прикрепленные файлы: 1 файл

КУРСОВА з СПЗ.docx

— 396.58 Кб (Скачать документ)

            range = (long)(high - low) + 1;

           

            high = low + (range * cum_freq[symbol - 1]) / cum_freq[0] - 1;

            low = low + (range * cum_freq[symbol]) / cum_freq[0];

           

            for (; ; )

            {

               

                if (high < half)

                    output_bit_plus_follow(0);

                                else if (low >= half)

                {

                    output_bit_plus_follow(1);

                    low -= half;

                    high -= half;

                }

               

                else if (low >= first_qtr && high < third_qtr)

                {

                    bits_to_follow += 1;

                    low -= first_qtr;

                    high -= first_qtr;

                }

                else

                    break;

                                low = 2 * low;

                high = 2 * high + 1;

            }

        }

        //------------------------------------------------------------

       

        int decode_symbol()

        {

           

            long range;

           

            int cum;

                        int symbol;

            int a;

           

            range = (long)(high - low) + 1;

           

            cum = (int)((((long)(value - low) + 1) * cum_freq[0] - 1) / range);

           

            for (symbol = 1; cum_freq[symbol] > cum; symbol++) ;

           

            high = low + (range * cum_freq[symbol - 1]) / cum_freq[0] - 1;

            low = low + (range * cum_freq[symbol]) / cum_freq[0];

           

            for (; ; )

            {

               

                if (high < half)

                {

                }

               

                else if (low >= half)

                {

            &


Информация о работе Утиліта стискання файлів за алгоритмом арифметичного кодування