Opened 7 years ago

Closed 6 years ago

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

ДЗ №2. Хаффман

Reported by: kaminskij.vasilij Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha2-deadline
Component: HA#2 huffman Version: 1.0
Keywords: Cc:

Description

Здравствуйте!

Прошу проверить мою работу.

С уважением,
Каминский Василий

Change History (8)

comment:1 Changed 6 years ago by Vladimir Rutsky

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

Замечания:

  1. Используйте nullptr вместо NULL.
  1. Включайте в заголовочный файл минимально необходимый набор зависимостей для заголовочного файла. Например <queue> стоит включить в huffman.cpp, т.к. он не требуется в huffman.hpp и пользователям huffman.hpp.
  1. В программе наблюдаются утечки памяти. Например, вы не освобождаете память от узлов дерева.

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

comment:2 Changed 6 years ago by Vladimir Rutsky

Milestone: ha2-milestone2ha2-deadline

Ещё замечания:

  1. Используйте сравнение std::string вместо strcmp.
  1. В качестве типа исключения используйте класс и ловите его по константной ссылке, но не указатель на класс (сейчас генерация такого исключения приводит к утечке памяти, т.к. вы не освобождаете выделенную память).
  1. При сериализации целочисленных типаов используйте типы, размеры которых фискированы, например std::uint32_t вместо int. Тип int имеет разный размер на разных платформах, что делает ваши архивы непереносимыми.
  1. Используйте стабильный компаратор в std::priority_queue. std::priority_queue не гарантирует порядок в котором элементы с одним и тем же приоритетом будут извлечены --- при сжатии порядок может оказаться одним, а при разжатии другим.

comment:3 Changed 6 years ago by kaminskij.vasilij

Здравствуйте!

Спасибо за ваши замечания, исправил. Также извиняюсь за небольшую задержку, так как проверка оказалось для меня неожиданной в зачётный период.

С уважением,
Каминский Василий

comment:4 Changed 6 years ago by kaminskij.vasilij

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

comment:5 Changed 6 years ago by Vladimir Rutsky

Василий, вы добавили в компаратор для priority_queue сравнение по символу, но этот символ всегда инициализирован нулём для не-листьев, тем самым построение дерева всё ещё недетерминировано.

comment:6 Changed 6 years ago by Vladimir Rutsky

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

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

comment:7 Changed 6 years ago by kaminskij.vasilij

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

Исправил на строгий порядок путем сравнения номеров нод n - времени создания, которое в программе строго детерминировано.

Last edited 6 years ago by kaminskij.vasilij (previous) (diff)

comment:8 Changed 6 years ago by Vladimir Rutsky

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

Вместо глобальной переменной стоит использовать что-то локальное, или детерминированное из-за других свойств. Например, можно в узлах не-листьях в качестве символа хранить минимальное значения символа в поддеревьях.

Глобальные переменные имеют ряд проблем, например, счетчик может переполнится, или ваш модуль нельзя использовать из нескольких потоков.

Решение зачтено с небольшим минусом.

Note: See TracTickets for help on using tickets.