Changes between Initial Version and Version 1 of ha02


Ignore:
Timestamp:
04/21/16 09:23:29 (8 years ago)
Author:
Evgeny Linsky
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ha02

    v1 v1  
     1Напишите программу, выполняющую сжатие двухпроходным алгоритмом Хаффмана.
     2
     31. Параметры командной строки.
     4 * -c архивирование
     5 * -u разархивирование
     6 * -f, --file <путь> имя входного файла
     7 * -o, --output <путь> имя результирующего файла
     8
     9Значение параметра (если есть) указывается через пробел.
     10Программа должна проверять корректность параметров и выводить сообщение об ошибке.
     11
     122. Программа должна выводить на экран статистику сжатия/распаковки: размер исходных данных, размер полученных данных и размер, который был использован для хранения вспомогательных данных в выходном файле (например, таблицы). Не должно выводиться никакого дополнительного текста, только размеры.
     13Все размеры в байтах.
     14
     15Например:
     16{{{
     17$ ./huffman -c -f myfile.txt -o result.bin
     1815678
     196172
     20482
     21}}}
     22
     23Размер исходного файла (исходные данные): 15678 байт, размер сжатых данных
     24(без дополнительной информации): 6172 байта, размер дополнительных данных:
     25482 байта. Рамер всего сжатого файла: $6172 + 482 = 6654$ байта.
     26
     27{{{
     28$ ./huffman -u -f result.bin -o myfile_new.txt
     296172
     3015678
     31482
     32}}}
     33
     34Размер распакованного файла (полученные данные): 15678 байт, размер сжатых данных
     35(без дополнительной информации): 6172 байта, размер дополнительных данных:
     36482 байта. Рамер всего исходного сжатого файла: $6172 + 482 = 6654$ байта.
     37
     383. Ограничения.
     39Наибольший размер входного файла~--- 5MB. Ограничение на время выполнения~--- 5 секунд.
     40
     414. Требования по реализации
     42 * Программа должна быть написана в ООП стиле
     43 * Там, где это уместно, должна быть использована библиотека STL (например, std::vector, а не динамический массив)
     44 * Должны использоваться исключения
     45 * Должен быть реализован свой класс для автоматического тестирования
     46 * Для нескольких публичных функций должны быть написаны автотесты
     47
     485. Примечания.
     49 * Рекомендуем удостовериться, что сжатый, а затем разжатый Вами файл эквивалентен исходному.
     50 * Рекомендуем протестировать на больших файлах, файлах разного типа (текстовые, бинарные) и  на пустом файле.
     51 * Рекомендуем проверить свою программу на синтетических тестах, заведомо плохо кодируемых алгоритмом Хаффмана.
     52 * Рекомендуем проверить свою программу на утечки памяти.
     53
     546.Формат сдачи.
     55В директории ha02 в репозитории должны быть: директория src, директория test, Makefile
     56
     57* Директория src: main.cpp, huffman.h, huffman.cpp
     58* Директория test: test.cpp, autotest.h, autotest.cpp, test_huffman.h, test_huffman.cpp
     59* Makefile:
     60
     611. цель по умолчанию собирает main и объектные файлы в директорию bin (создается при сборке, если не существует)
     622. цель test собирает test и объектные файлы в директорию bin
     633. цель clean очищает директорию bin
     64
     657. Срок сдачи
     66
     676 мая, 23:59