Change History (5)

comment:1 Changed 7 years ago by Grigorii Zimin

Component: HA#1 matricesHA#2 huffman

comment:2 Changed 7 years ago by Vladimir Rutsky

Milestone: ha2-milestone1ha2-milestone2
Type: ожидается проверкаожидаются исправления

Замечания:

  1. Вместо static_cast<std::string>(argv[3]) используйте std::string(argv[3]) (а короче даже std::string const inputFile(argv[3]);). Я не вижу смысла в явном static_cast здесь.
  1. Открывайте файл в конструкторе (особенно если вы не собираетесь переиспользовать fstream для работы с несколькими файлами):
//std::ifstream inputStream;
//inputStream.open(inputFile, std::ios_base::binary);
std::ifstream inputStream(inputFile, std::ios_base::binary);
  1. Используйте C++ версию заголовочного файла <stdint.h>: <cstdint>.
  1. Включайте все заголовочные файлы в начале файла (в строке 47 huffman.cpp есть #include <iostream>).
  1. Вместо input.ignore(std::numeric_limits<std::streamsize>::max()); лучше с сделать seek в конец файла std::ios_base::end --- это больше подходит по смыслу.
  1. У вас все методы класса Huffman статические --- сделайте их свободными функциями, а функции не относящиеся к интерфейсу кодирования/декодирования (например, empty(), makeTable(), CharSetFrequency) перенесите в cpp файл.
  1. Вместо std::vector<uint32_t> в качестве результата encode()/decode() используйте более ограниченный класс, например, собственную структуру с именованными полями, или std::tuple, или std::array фиксированного размера.
  1. Здесь вы можете выйти за границу codedText:
 while (pos < codeLength) {
     for (auto &encoded : table) {
         if (std::equal(encoded.second.begin(), encoded.second.end(), codedText.begin()+pos)) {
  1. При декодировании вы ищете подходящий код во входном потоке перебирая все коды. Постройте префиксное дерево кодов и спускайтесь по нему при получении очередного бита из сжатого потока.

Исправьте, пожалуйста, в течение 60 часов.

comment:3 Changed 7 years ago by Grigorii Zimin

Type: ожидаются исправленияожидается проверка

comment:4 Changed 7 years ago by Vladimir Rutsky

Resolution: задача сдана
Status: newclosed

Решение зачтено.

comment:5 Changed 7 years ago by Vladimir Rutsky

Milestone: ha2-milestone2

Milestone ha2-milestone2 deleted

Note: See TracTickets for help on using tickets.