Opened 6 years ago

Closed 6 years ago

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

Домашнее задание 2

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

Description

Добрый день.
Посмотрите, пожалуйста, домашнее задание. Спасибо!

Change History (4)

comment:1 Changed 6 years ago by Vladimir Rutsky

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

Замечания:

  1. Страж включения должен оборачивать весь файл:
#include <unordered_map>

#ifndef HUFFMAN_HUFFMAN2_HPP
#define HUFFMAN_HUFFMAN2_HPP
  1. Вы используете std::istream_iterator, но не включаете в huffman.cpp <iterator>.
  1. std::__1::ios_base::end: __1 --- это деталь реализации (и не компилируется, например, в Clang). Используйте std::ios_base::end.
  1. Необходимо реализовать обработку аргументов командной строки без использования сторонних библиотек, вроде getopt.
  1. Заголовочный файл не самодостаточен. Например, в нём используется std::string, но не включается <string>.
  1. Используйте enum для SUCCESS и ERROR_CANNOT_OPEN_FILE.
  1. Некоторые функции всегда возвращают SUCCESS. В этом нет смысла, возвращайте void. Также вы можете использовать исключения для обработки ошибочных ситуаций.
  1. В коде есть неиспользуемые переменные, например, std::unordered_map<std::uint8_t, int> char_frequencies; в readOriginalFile() или i здесь:
 int i = 0;
 for (auto character:charFrequencies) {
     i++;
     queue.push({{character.first}, character.second});
 }
  1. Используйте тип size_t для количеств, диапазона значений типа int может не хватить.
  1. Используйте typedef для сложных типов.

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

comment:2 Changed 6 years ago by Aleksandr Eslikov

  1. Перенес #include <unordered_map> внутрь стража включения
  2. Изменил include’ы в huffman.cpp
  3. Это побочный эффект от использования в CLion Refactor->Extract->Method. Исправил
  4. Реализовал обработку аргументов без использования getopt
  5. Изменил include’ы в huffman.hpp
  6. Переделал коды ошибок на enum
  7. Поменял сигнатуры методов. Теперь они возвращают void
  8. Удалил неиспользуемые переменные
  9. Изменил int на size_t
  10. Добавил typedef’ы

comment:3 Changed 6 years ago by Aleksandr Eslikov

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

comment:4 Changed 6 years ago by Vladimir Rutsky

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

Замечания:

  1. Аргументы-объекты, которые не должны быть модифицированы внутри функции стоит передавать константными: Huffman::Huffman(const std::string &inputFileName, const std::string &outputFileName).

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

Note: See TracTickets for help on using tickets.