Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#66 closed ожидается проверка (задача сдана)

HW2 huffman

Reported by: Luchko Alexander Owned by: Vladimir Rutsky
Priority: проверка Milestone:
Component: HA#2 huffman Version: 1.0
Keywords: Cc:

Description

задание номер 2

Change History (9)

comment:1 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. Передавайте объекты, которые не планируете модифицировать по константной ссылке:
bool dec(string const & ifile, string const & ofile);
...
bool operator() (HuffTree const * node, HuffTree const * node1)
...
HuffTree* doHuffman(map<uint8_t, uint32_t> const & mapNumOfRepeating,
                    map<uint8_t, string>& codes_huffman) {
...
  1. Не используйте using namespace std; в заголовочном файле --- в противном случае вы "загрязняете" глобальную область видимости для всех пользователей вашего заголовочного файла. Используйте using namespace std; в *.cpp файлах (или в своей области видимости).
  1. Не используйте глобальные переменные.

Если вам нужно сохранить состояние между вызовами каких-то функций (а вам нужно), тот стоит либо сохранить это состояние в статических переменных внутри функции (что всё равно плохо, т.к. это по сути те же глобальные переменные), либо сделать enc(), dec() и некоторые другие функции методами класса, а в полях класса хранить состояние, которое должно быть сохранено между вызовами частей enc()/dec().

  1. Используйте тип size_t для индексов и размеров:
for(int i=0; i < huffCodes[currChar].length(); i++) {
  1. При кодировании/декодировании пустого файла вы выводите, что доп. данные занимают 8 байт, хотя вы их не записываете.
  1. std::priority_queue не гарантирует, что при добавлении элементов с одним приоритетом они будут извлечены в каком-то определённом порядке, поэтому теоретически ваше решение может строить различные деревья при кодировании и декодировании, если у каких-то символов одинаковый частота встречаемости, при приведёт к ошибчному декодированию.

Сделайте сравнение в Compare стабильным.

  1. Вместо -output должен поддерживаться флаг --output.
  1. При сжатии файла вы не освобождаете память от дерева.
  1. Нет необходимости сохранять количество символов в исходном файле при сжатии --- вы можете его вычислить просуммировав количества каждого встречающегося символа.
  1. Ваше решение очень похоже на решение Сергея Лучко.

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

comment:2 Changed 7 years ago by Luchko Alexander

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

Здравствуйте.
всё исправил
про 10 пункт действительно похож, так как чтение из бинарников падало, считывать в таком "побитовом" виде была действительно не моя идея, времени было мало, попросил показать способ чтения. Также прошу прощения за то, что не смог исправить за 60 часов, в Универе были контрольные и сдача статей.

comment:3 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. Заголовочный файл должен быть самодостаточным: в huffman.hpp вы используете std::ofstream, std::ifstream и другие типы. Плюс вы неявно предполагаете, что пользователь huffman.hpp делает using namespace std; --- вы используете std::uint8_t и аналогичные типы без указания std.
  1. Замечания 1 из предыдущей проверке про передачу объектов по константной ссылке исправлено не до конца:
bool dec(std::string const & ifile, std::string const & ofile);
bool enc(std::string const & ifile, std::string const & ofile);
  1. В выводимой статистике вы выводите сжатый размер на 4 байта больше, чем на самом деле.

Исправьте, пожалуйста, в ближайшее время.

comment:4 Changed 7 years ago by Vladimir Rutsky

Александр, вы будете исправлять ваше решение?

comment:5 in reply to:  4 Changed 7 years ago by Luchko Alexander

Replying to rutsky:

Александр, вы будете исправлять ваше решение?

Здравствуйте
В течение дня исправлю. Вчера была защита, потом домой ехал на прадники(приехал поздно, только проснулся)

comment:6 Changed 7 years ago by Luchko Alexander

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

comment:7 Changed 7 years ago by Luchko Alexander

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

comment:8 Changed 7 years ago by Vladimir Rutsky

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

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

comment:9 Changed 7 years ago by Vladimir Rutsky

Milestone: ha2-deadline

Milestone ha2-deadline deleted

Note: See TracTickets for help on using tickets.