Сжатие методом Хаффмана (простой) и сжатие методом Шеннона-Фано
Программа
в среде программирования Visual C++
Среда программирования: Visual C++
Название работы: Сжатие методом Хаффмана (простой) и сжатие методом Шеннона-Фано
Вид работы: Программа
Описание: Само задание описано в приложенном файле.
Только есть несколько уточнений:
Вопрос: Следует реализовать побайтовое сжатие или посимвольное? Если побайтовое, то все понятно. А если посимвольное, то для внутреннего представления символов следует использовать UTF-32 или достаточно ограничиться UTF-16 и не обращать внимание на byte order mark? И еще в задании написано: "В начале пишется количество различных символов n, имеющихся в кодируемом файле, а затем n пар (код символа UTF-8, битовый код в архиве)." Не совсем понятно в каком представлении Unicode хранить "код символа UTF-8". В UTF-8, UTF-16 или же UTF-32? Это не было бы проблемой, если бы не указание: "Предполагается перекрестная проверка решений". - Ответ: Важно! В связи с большим количеством вопросов и идей по подходу к решению КДЗ, а также нежеланием ограничивать творческий потенциал студенчества принято решение об исключении требования совместимости между программами разных студентов. Это означает, что кросс-проверки решений КДЗ проводиться не будет. Таким образом, каждый студент может самостоятельно определить особенности формата архивного файла. Важно, чтобы ваш деархиватор умел разархивировать файлы, зашифрованные вашим архиватором. Таким образом, для внутреннего представления вы можете использовать любое представление, которое будет корректно работать.
Вопрос: В задании написано хранить в файле пары - "код символа UTF-8, битовый код в архиве", но каким образом следует считывать битовый код в архиве из этой таблицы? Это возможно сделать для самого архива из-за свойств кода, но в самой таблице точно определять конец последовательности "битов кода в архиве" кажется мне невозможным. Разве что писать перед каждым кодом его длину, но это не указано в спецификации. - Ответ: На самом деле могут быть разные варианты хранения и считывания такой таблицы. Считаем, что Вы можете самостоятельно выбрать/придумать подходящий (в т.ч. и писать длину кода перед кодом, что не есть самый лучший вариант).
Вопрос: Как считать шаги, если используются библиотечные методы? Ответ: В этом случае надо считать вызов библиотечного метода за один шаг. При этом вы считаете количество шагов для всего, что реализуется без табличных методов. В отчете надо явно указать, какие библиотечные методы используются (и оценить, насколько их влияние на эффективность существенно). Плюсом будет дополнительный подсчет времени архивации/разархивирования. Это позволит сравнивать алгоритмы с учетом работы библиотечных алгоритмов.
Вопрос: Разрешено ли использовать BOOST ? (Ответ: Да. Но только при условии явного указания в отчете как факта использования, так и конкретных используемых методов/структур и т.д.
Обратите внимание, что в тексте КДЗ произошло небольшое изменение.
Старый текст: "Для повышения достоверности результатов каждый эксперимент можно повторить несколько (5-10) раз на одном файле с последующим усреднением результата."
Новый текст: "Для повышения достоверности результатов каждый эксперимент можно повторить несколько (5-10) раз на различных файлах (с одним возможным набором символов) одного размера с
последующим усреднением результата."
Совместимость с CLion
Год: 2016
Данный заказ (программа) выполнялся нашим сайтом в 2016-м году, в рамках этого заказа была разработана программа в среде программирования Visual C++. Если у Вас похожее задание на программу, которую нужно написать на Visual C++, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2016-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.:
+79374242235
Viber: +79374242235 Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |