Opened 3 years ago

Closed 3 years ago

#713 closed ожидаются исправления (задача сдана)

HW #3 (Huffman) Panenkov hw_02

Reported by: Semyon Panenkov Owned by: Антон Филатов
Component: HW #3 (Huffman) Version: 1.0
Keywords: Cc:

Description

Как обычно, где-то да профакапился. Написал длинку, а только потом осознал, что файл, у которого бы коды вылезали за 64 бита, на диск не уместить.

Change History (3)

comment:1 Changed 3 years ago by Semyon Panenkov

Owner: changed from Evgeny Linsky to Антон Филатов
Status: newassigned
Version: 1.0

comment:2 Changed 3 years ago by Антон Филатов

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

У вас две папки: hw2 и hw_02 - уберите лишнюю. Я проверял hw_02

ошибка при сборке

/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/huffman.cpp:78:38: error: ‘max_element’ is not a member of ‘std’
         uint8_t max_code_len = *std::max_element(header.lengths.begin(), header.lengths.end());
                                      ^~~~~~~~~~~
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/huffman.cpp:78:38: note: suggested alternative: ‘tuple_element’
         uint8_t max_code_len = *std::max_element(header.lengths.begin(), header.lengths.end());
                                      ^~~~~~~~~~~
                                      tuple_element

/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp: In constructor ‘huffman::huffman_tree::huffman_tree(const frequency_table&)’:
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:30:9: error: ‘assert’ was not declared in this scope
         assert(!queue.empty());
         ^~~~~~
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:30:9: note: suggested alternative: ‘qsort’
         assert(!queue.empty());
         ^~~~~~
         qsort
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp: In member function ‘void huffman::huffman_tree::build_tree()’:
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:34:25: error: ‘not_fn’ is not a member of ‘std’
         auto cmp = std::not_fn(node_ptr_less());
                         ^~~~~~
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:34:25: note: suggested alternative: ‘not2’
         auto cmp = std::not_fn(node_ptr_less());
                         ^~~~~~
                         not2
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp: In member function ‘huffman::code_length_table huffman::huffman_tree::build_code_lengths()’:
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:55:13: error: ‘assert’ was not declared in this scope
             assert(queue.size() == 1);
             ^~~~~~
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/tree.cpp:55:13: note: suggested alternative: ‘qsort’
             assert(queue.size() == 1);
             ^~~~~~
             qsort

/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/long_code.cpp:48:9: error: ‘memmove’ was not declared in this scope
         memmove(blocks.data() + big_shl, blocks.data(), (blocks_num - big_shl) * sizeof(uint32_t));
         ^~~~~~~
/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/long_code.cpp:48:9: note: suggested alternative: ‘wmemmove’
         memmove(blocks.data() + big_shl, blocks.data(), (blocks_num - big_shl) * sizeof(uint32_t));
         ^~~~~~~
         wmemmove

И самое страшное, что не даёт мне проверять:

/home/wwu/cpp20/cpp20/panenkov.semen/hw_02/src/main.cpp:6:10: fatal error: argparse.h: No such file or directory
 #include "argparse.h"
          ^~~~~~~~~~~~
compilation terminated.

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

Корректность пока проверить не могу.
Стиль:

  • очень много волшебных констант
  • в каких-то заголовочниках у вас есть раелизация, в каких-то нет. Выберите что-то одно
  • вопросы есть по вашему fast_io - это хорошо, что вы понимаете, что можно сделать, чтобы ускорить стандартные штуки. Вопрос - зачем? Вопрос не потому, что вы сделали неправильно, а просто объясните, чем вызвана такая необходимость? и вот про этот инклюд не понял #include <arpa/inet.h> - он зачем?
  • а вы точно хотите, чтобы пользователь вашей "библиотеки" (так это назовём) имел доступ ко всем разработанным классам? Это я так намекаю на разделение нэймспейсов. Я придираюсь, но кажется, что для вас ничего бы не стоило сделать иерархию неймспейсов разделённую на условный public и private
  • не обрабатываете длинные флаги, вроде --file и --output покрытие тестами прям нравится. Не компилируется, но нравится :)

Пока корректность: 0/15
Стиль: 6/10
Тесты: 5/5

comment:3 Changed 3 years ago by Антон Филатов

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

15 + 10 + 5

Note: See TracTickets for help on using tickets.