Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

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

Домашнее задание №2: "Хаффман"

Reported by: Анастасия Семенова Owned by: Vladimir Rutsky
Priority: проверка Milestone:
Component: HA#2 huffman Version: 1.0
Keywords: Cc:

Description

Здравствуйте! Проверьте, пожалуйста, второе домашнее задание.

Ссылка на репозиторий: http://trac.compscicenter.ru/svn/cpp16/semyonova.anastasiya/ha2/

Milestone: 6 ноября.

Change History (4)

comment:1 Changed 7 years ago by Vladimir Rutsky

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

Замечания:

  1. std::string по умолчанию инициализируется пустой строкой:
std::string file = "";
  1. Вместо std::string::compare() используйте std::string::operator==:
else if (action == "-o" || action == "--output")
  1. Данная опция вам не нужна, т.к. вы используете побайтовое чтение/запись (ifstream::read()/ifstream::write()):
input_stream.unsetf(std::ios::skipws);
  1. Используйте тип size_t для индексов и размеров:
int different_char_count = 0;
  1. Выводимая статистика распаковки некорректна:
$ ./huffman -c -f x.1.in -o compressed 
1
1
1024
$ /huffman -u -f compressed -o decompressed
1
18446744073709550593
1024
  1. Зачитывайте данные сразу в контейнер для их хранения; пусть read_from_input_file() сразу возвращает std::string. Вы можете создать std::string нужного размера и считать в него с помощью ifstream.read().

Также я бы рекомендовал не использовать std::string в качестве контейнера байт, а использовать std::vector<std::uint8_t> или std::vector<unsigned char>.

При чтении/записи придётся делать reinterpret_cast и в этом нет ничего страшного --- это один из тот редких случаев, когда он нужен:

std::vector<std::uint8_t> buffer(size, 0);
input_stream.read(reinterpret_cast<char*>(&buffer[0]), size);

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

comment:2 Changed 7 years ago by Анастасия Семенова

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

Поправила.

  1. Убрала инициализацию.
  2. Заменила compare на ==.
  3. и 6. Добавила std::vector<std::uint8_t> в качестве контейнера байт.
  4. Заменила int на size_t, где нашла индексы и размеры.
  5. Поправила вывод статистики распаковки.

comment:3 Changed 7 years ago by Vladimir Rutsky

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

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

comment:4 Changed 7 years ago by Vladimir Rutsky

Milestone: ha2-milestone2

Milestone ha2-milestone2 deleted

Note: See TracTickets for help on using tickets.