Opened 3 years ago

Closed 3 years ago

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

WW_mergesort Kuznecz Anton lab_03

Reported by: Anton Owned by: Антон Филатов
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description


Change History (6)

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

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

Корректность: все тесты выводят правильный результат (ну, кроме \n в конце), но на каждый тест ругается валгринд на defenetly lost bytes

По формальным правилам 0/7 за корректность
Стиль:

  • не хватает пустых строк (хотя бы между while-ами)
  • если у вас слишком длинная сигнатура фукнции (более 100-120 символов), то имеет смысл разделить её на две или несколько строки

Например, вместо

void my_merge(void* begin1, void* end1, void* begin2, void* end2, void* begin, size_t element_size, int(*cmp)(const void* el1, const void* el2)) {

Сделать

void my_merge(void* begin1, void* end1, void* begin2, void* end2, 
              void* begin, size_t element_size, 
              int(*cmp)(const void* el1, const void* el2)) {

В остальном всё ок
3/3 за стиль, но поправьте замечания выше

итог: 3/10

comment:2 Changed 3 years ago by Anton

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

1) Valgrind больше не ругается
2) '\n' в конце вывода
3) Бонусное задание

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

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

Да, основное задание - 10/10, а вот по бонусному не могу сейчас зачесть

Смотрите, ваш код:

mergesort(arr, middle, element_size, comparator);
mergesort((char*)arr + middle * element_size, elements - middle, element_size, comparator);

char* const res = (char*)malloc(elements * element_size);
if(res == NULL)
   return -1;

может так статься, что на какой-то там глубине рекурсии один из mergesort-ов вернул -1, а потом после этого память резко появилась и следующий malloc выделил память правильно. Получается, что та -1 потерялась навсегда. Ведь return внутри рекурсивной функции не останавливает раскрутку рекурсии

Так что пока 10/10

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

Кстааати. У вас в mergesort как-то многовато malloc-ов получается. По сути на каждой итерации рекурсии надо что-то малочить. Нельзя ли обойтись одном malloc-м?
Нельзя одним малоком, проехали

Last edited 3 years ago by Антон Филатов (previous) (diff)

comment:5 Changed 3 years ago by Anton

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

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

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

Принимается. 11/10

Note: See TracTickets for help on using tickets.