Opened 5 years ago

Closed 5 years ago

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

WW #4

Reported by: Bagryanova Ekaterina Owned by: Sokolov Viacheslav
Component: WW_mergesort Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

В компараторах теряется константность

return strcmp(*(CONST char**)first, *(CONST char**)second);

в C++ так уже не получится делать

Проверка контрактов, где же она?! Обращаю внимание, что в этом задании контрактов больше, чем "ненулевые указатели".

Замечание: на самом деле не нужен swap, достаточно лишь записи в результирующий массив.

Можно придумать получше имя функции, что должно делать ind прохожий вам не скажет.

Реализацию merge_sort можно упростить, если допускать в цикле u1 == sz
u2 == sz2, то есть делать условием остановки while (!(u1 == sz1 && u2 == sz2))

Это позволит избавиться от дублирования кода

У Вас в программе уточка утечка памяти. Ее легко найти с помощью -fsanitize=leak и ключа компиляции -g.

Есть еще одно скользкое место: результат вызова malloc(0) не специфирован
https://en.cppreference.com/w/c/memory/malloc

If size is zero, the behavior is implementation defined (null pointer may be returned, or some non-null pointer may be returned that may not be used to access storage, but has to be passed to free).

Проще всего сделать так, чтобы его не было (в main.c)

За исключением утечки памяти программа работает корректно.

comment:2 Changed 5 years ago by Bagryanova Ekaterina

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Было бы хорошо вынести "Error: memory allocation failed" в отдельную именованную константу, чтобы не дублировать (а вдруг поменять нужно будет?)

Не хватает проверки контрактов в my_mergesort (array == 0? comparator == 0? elem_sz == 0? elem_sz * sz переполняется?)

Бонус выполнен корректно, в оценке учтен

Note: See TracTickets for help on using tickets.