Opened 5 years ago

Closed 5 years ago

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

WW #4

Reported by: lopatin.mikhail Owned by: Sokolov Viacheslav
Component: WW_make Version: 1.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

Точно ли нужны все подключаемые заголовочные файлы?

Здесь намеренно такое форматирование?

 43     if (elem == 1)
 44     return;

Не работает на тестовом примере

./lab_04 char z y x	(должно быть x y z)

Нет проверки контрактов функций (а их здесь больше, чем ненулевые указатели)

Реализацию merge можно упростить, если поменять условие в первом цикле на
while(!(I_left == mid && I_right == right))
это позволит избавиться от дублирования кода (внутри цикла нужно будет что-то поправить)

comment:2 Changed 5 years ago by lopatin.mikhail

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
20     return strcmp(*(CONST char**)b, *(CONST char**)a);

mergesort.c
comp может быть нулевой?
elem_size может быть нулевой?

46     merge_sort((char*) arr, mid, elem_size, comp);

каст (char*) не нужен (на вход ожидается void*)

также не нужны касты в реализации merge, переменные и так типа char*

использование memcpy по условию запрещено:

Все операции, связанные с копированием памяти, надо реализовать самостоятельно.

кроме того, всю память можно было бы копировать разом, а не поэлементно;
здесь

35     for (size_t i = 0; i < elem * elem_size; i += elem_size) {

умножение стоило бы вынести наружу, чтобы гарантировать, что оно не будет происходить на каждой итерации цикла, да и вообще оно много раз используется в теле функции merge

Note: See TracTickets for help on using tickets.