Opened 5 years ago

Closed 5 years ago

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

WW #4

Reported by: Vladislav Nosivskoy 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: ожидается проверкаожидаются исправления

Не работает на примере из условия
./lab_04 str foo bar bazooka baz

и в случае пустого ввода (он разрешен по условию).

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

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

Желательно:

  • не терять const в компараторах

return strcmp(*(CONST char**)a, *(CONST char**)b);

  • больше проверок контрактов. element_size == 0 допустимо? что если elements * element_size переполнится? c elements == 0 работаем или нет? comparator может быть NULL? еще есть постусловия, их тоже бывает полезно проверять

касты к char* не нужны, если тип и так char*

реализацию можно упростить, если в единственном цикле while разрешать достигать одним из указателей (но не двумя одновременно) границы; при этом внутри добавятся проверки, зато уйдет дублирование кода.

comment:2 Changed 5 years ago by Vladislav Nosivskoy

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Строчку "Error: memory allocation failed." стоило было бы не дублировать, вынеся ее в именованную константу

Стоило бы провалидировать, что element_size != 0

Вместо

45 for (size_t i = 0; i < elements; ++i) {
46 my_memcpy(cur_ar, cur, element_size);
47 cur += element_size;
48 cur_ar += element_size;
49 }

можно было бы сразу скопировать весь буфер

Note: See TracTickets for help on using tickets.