Форум программистов, компьютерный форум CyberForum.ru

Арифметическое кодирование - 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 соответственно на расстояние L1,L2,...,Lm. Стоимость перевозки 1т. км груза известна i составляет C рб. Напечатать ведомость выплаты заработной платы за выполненную работу с указанием табельного номера водителя и его заработной платы.
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
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
05.03.2010, 21:21     Арифметическое кодирование
Арифметическое кодирование лучше делать целочисленным. Разбиение на блоки зависит исключительно от природы файла - это кодирование вплотную приближается к шенноновской мере информации для независимых символов. Если у тебя в разных блоках получаются сильно различающиеся таблицы частот - велкам, кодируй блоками. Если содержимое файла равномерное, смысла в блоках нет.
Принцип такой: ты ведёшь границы, между которыми находится искомое число. Допустим, unsigned int. Нижняя изначально заполняется нулевыми битами, верхняя - единичными. При поступлении очередного символа ты изменяешь границы в зависимости от его частотного интервала (думаю, принцип ты понимаешь, если нет - спроси отдельно). Все совпавшие старшие биты границ отправляем в итоговый файл, потому что они уже не изменятся в ходе дальнейших вычислений. Ты выкидываешь при помощи сдвига эти биты из границ, а вновь образовавшиеся младшие биты заполняешь нулями для нижней и единицами для верхней границы. Таким образом, оказывается достаточно всего лишь пары unsigned int для того, чтобы пропустить сквозь них файл любой длины.
 
Текущее время: 01:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru