Форум программистов, компьютерный форум, киберфорум
Наши страницы

Арифметическое кодирование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Взаимодействие компьютера и программы - посоветуйте литературу. http://www.cyberforum.ru/cpp-beginners/thread101651.html
Всем доброго времени суток, в ходе своего изучения языка программирования С++(изучаю по книге Айвора Хортона), с каждой последующей главой сталкиваюсь с проблемой непонимания одних и техже аспектов!...
C++ Двухмерные массивы. Вывод макс элем над вспом диагональю, обнуление столбца Помогите пожалуйста решить задачку... Дана матрица Х(7,7) найти максимальный элемент, находящийся выше вспомогательной диагонали, вывести на экран его значение и координаты, а столбец, в котором... http://www.cyberforum.ru/cpp-beginners/thread101616.html
C++ Двунаправленные списки
Доброго времени суток! Помогите плиз с задачкой: Определить количество чётных элементов среди элементов расположенных до первого отрицательного.
Напечатать ведомость выплаты заработной платы за выполненную работу C++
Помогите пожалуйста разобраться с массивами, буду благодарен за любую помощь M водителей с табельными номерами N1,N2,...,Nm перевозили грузы весом P1,P2,...,Pm соответственно на расстояние...
C++ Найти ошибку и перегрузить операцию http://www.cyberforum.ru/cpp-beginners/thread101597.html
Ребята! Пропадаю! Помогите найти ошибку в коде и написать перегрузку: class Reis { int p; int hl; public: reis operator - (reis a, reis b); }; вот... А перегрузить операцию int + reis
C++ Перегружаемые функции Помогите привести в рабочее состояние, а то хз че - не компилиться((( Надо создать 3 перегружаемые функции, которые выделяют память в куче и возвращают указатель на созданный массив. Принимать 2... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1646 / 1018 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.03.2010, 21:21
Арифметическое кодирование лучше делать целочисленным. Разбиение на блоки зависит исключительно от природы файла - это кодирование вплотную приближается к шенноновской мере информации для независимых символов. Если у тебя в разных блоках получаются сильно различающиеся таблицы частот - велкам, кодируй блоками. Если содержимое файла равномерное, смысла в блоках нет.
Принцип такой: ты ведёшь границы, между которыми находится искомое число. Допустим, unsigned int. Нижняя изначально заполняется нулевыми битами, верхняя - единичными. При поступлении очередного символа ты изменяешь границы в зависимости от его частотного интервала (думаю, принцип ты понимаешь, если нет - спроси отдельно). Все совпавшие старшие биты границ отправляем в итоговый файл, потому что они уже не изменятся в ходе дальнейших вычислений. Ты выкидываешь при помощи сдвига эти биты из границ, а вновь образовавшиеся младшие биты заполняешь нулями для нижней и единицами для верхней границы. Таким образом, оказывается достаточно всего лишь пары unsigned int для того, чтобы пропустить сквозь них файл любой длины.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru