Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

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

HW #2

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

Description

Please check my homework.

Change History (6)

comment:1 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. Файлы с решением должны называться huffman.*, а у вас называются huffmann.*.
  1. Страж включения должен оборачивать весь файл:
#include <stdexcept>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>    
#include <algorithm> 
#include <cstdint> 

#include <bitset>
#ifndef PROJECT_HUFFMANN_H
#define PROJECT_HUFFMANN_H
  1. В качестве внешнего интерфейса достаточно оставить в huffman.hpp только huffmannCode и huffmannDecode, остальное это детали реализации, перенесите их в huffman.cpp (включая нужные для них включения заголовочных файлов).
  1. Принимайте объекты, которые не планируете модифицировать, по константной ссылке:
void huffmannCode(std::string const & inputFile, std::string const & outputFile);
  1. Лучше, если char * readFileCode(string filename, int * fileLength) будет возвращать vector символов или string. Это сделает код проще и безопасней (в плане утечек памяти).

Также, нет необходимости явно вызывать file.close() - он будет закрыт при выходе из функции в деструкторе file.

  1. make_heap не гарантирует, что при добавлении элементов с одним приоритетом они будут извлечены в каком-то определённом порядке, поэтому теоретически ваше решение может строить различные деревья при кодировании и декодировании, если у каких-то символов одинаковый частота встречаемости, при приведёт к ошибочному декодированию.

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

  1. Не указывайте this-> там, где не не требуется.

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

comment:2 Changed 7 years ago by Yana Kuznetsova

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

comment:3 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. Вы не освобождаете память от буфера в readFileCode (char * buffer = new char [length];). Не создавайте дополнительный буфер --- считывайте сразу в vector, заранее подготовив место в нём:
vector <char> chars(length, '\0');
file.read(chars.data(), length);
  1. Вы сделали сравнение листов дерева стабильным в куче, но не-листы с одинаковой встречаемостью по-прежнему извлекаются из кучи не в стабильном порядке (т.к у них character всегда равен 0).

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

comment:4 Changed 7 years ago by Yana Kuznetsova

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

comment:5 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. Не следует использовать глобальные переменные.

Решение зачтено, но с минусом.

comment:6 Changed 7 years ago by Vladimir Rutsky

Milestone: ha2-deadline

Milestone ha2-deadline deleted

Note: See TracTickets for help on using tickets.