Opened 3 years ago

Closed 3 years ago

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

WW #3

Reported by: savinov.vladislav Owned by: Святослав Власов
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description

Я так и не справился с тем, чтобы выделить память через malloc в случае работы со строками, поэтому оставил [][].

Change History (6)

comment:1 Changed 3 years ago by Святослав Власов

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

Корректность -- 7/7.

Стиль -- 1.1/3

  1. Длинные строки (>80 символов) нужно разбивать на несколько. Примеры того, как строки должны разбиваться для условий, вызовов функций, объявлений функций и т.д. можешь посмотреть вот тут -- https://google.github.io/styleguide/cppguide.html#Formatting
  2. Кое где намешал пробелов и табуляции -- у меня отступы съехали.
  3. Давай всяким l, emp, cp, m, lt, rt и т.д. придумаем более говорящие названия. А то больно читать.
  4. *(l + j) = *(res + j); -- синтаксис массивов?
  5. В случае сортировки строк твой алгоритм, который сначала находит максимальную длину, а потом копирует строки в один здоровый буфер, во-первых неоптимален по памяти -- представь себе входные данные из одной строки длиной тысячу символов и тысячи строк длиной в 1 символ, а во-вторых совершенно зазря копирует строки целиком при сортировке, что совершенно не нужно. Ты можешь в массиве хранить не сами строки, а указатели на них и сортировать указатели, вместо самих строк.
  6. Почему в Makefile закомменчена зависимость объектных файлов от заголовочного?
Last edited 3 years ago by Святослав Власов (previous) (diff)

comment:2 Changed 3 years ago by Святослав Власов

upd:

  1. К тому же ты формируешь буфер для всех строк прямо на стеке. Если входных данных будет достаточно много, то программа упадет со stack overflow.
  2. Не проверяешь ассертами выделенную в main память.
  3. Для бонуса не хватает проверки выделенной в main памяти.

comment:3 Changed 3 years ago by savinov.vladislav

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

comment:4 Changed 3 years ago by Святослав Власов

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

Стиль -- 2.9/3

  1. Вместо того, чтобы весь код пихать под условие if (argc > 2) лучше написать
if (argc <= 2)
  return;
<остальной код>

Бонуса нет, потому что возвращаемое значение рекурсивных вызовов mergesort не проверяется и ошибка не проталкивается выше.

comment:5 Changed 3 years ago by savinov.vladislav

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

comment:6 Changed 3 years ago by Святослав Власов

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

11/11

Note: See TracTickets for help on using tickets.