Change History (8)

comment:1 Changed 5 years ago by Артур Гулецкий (huletski)

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

Программа не собирается, в решении присутствуют артефакты сборки:

{lab_04}[2017]$ pwd && svn up && svn status
/home/hfx/dvl/cpp19/potryasaeva.anna/lab_04
Updating '.':
At revision 1050.
{lab_04}[2018]$ ls
include  Makefile  obj  src
{lab_04}[2019]$ make
gcc -g -c -Wall -Wextra -Werror -fsanitize=address -Iinclude src/main.c -o obj/main.o
src/main.c:3:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    3 | int main {
      |          ^
Makefile:15: recipe for target 'obj/main.o' failed
make: *** [obj/main.o] Error 1

comment:2 Changed 5 years ago by potryasaeva.anna

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

comment:3 Changed 5 years ago by Артур Гулецкий (huletski)

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

Тесты проходит, +10. Бонусное задание, насколько я понял, вы не делали.

Замечания:

  • не соблюдается единый стиль отступов (main.c) -> -1;
  • нечитаемые строки по 100+ символов в mergesort.c -> -0.5, надо переформатировать код так, чтобы максимальная длина каждой строки не превышала 80 либо 100 символов;
  • условие mergesort.c:11 нетривиально, сохраняйте результат его вычисления в переменной с осмысленным именем и используйте ее для сравнения -> -0.5;
  • использование memcpy противоречит условию ("Все операции, связанные с копированием памяти, надо реализовать самостоятельно.") -> -2;
  • проверьте, чтобы все вызовы функций были написаны в одном стиле (где-тo есть пробелы перед запятой, где-то нет, например, mergesort.c:33).

Итог: 6/10, для получения большего числа баллов нужно исправлять замечания.

comment:4 Changed 5 years ago by potryasaeva.anna

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

comment:5 Changed 5 years ago by Артур Гулецкий (huletski)

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

Изменения ничего не поломали, но по стилю все еще остаются замечания:

  • победить 100+ строки не удалось (mergesort.c:5, 12. В первом случае поможет форматирование (также делающее сигнатуру более наглядной)
    void merge(void *dst,
               void *left, size_t left_sz,
               void *right, size_t right_sz,
               comparator)
    

, второй случай см. в следующем замечании -> -0.5;

  • условие mergesort.c:12 нетривиально, чтобы понять его смысл и мотивацию, надо анализировать код в ветках условия. Если вынести условие в отдельную переменную с осмысленным именем, код станет более очевидным. В вашем случае, происходит выбор источника для следующего элемента для записи в буфер, что можно артикулировать так:
    int left_is_src = ...;
    if (left_is_src) { ...}
    else { ...}
    

Код станет нагляднее, кроме того, станет совсем уж очевидно, что в ветках if-a код дублируется и можно записать его более линейно (проще для восприятия):

int use_left_as_src = ...;
void src = use_left_as_src ? left + elem_sz * left_i++
                           : right + elem_sz * right_i++;
// copy elem from src to buffer
  • дублирование кода копирования элементов, надо вынести в отдельную функцию (e.g. my_memcpy) -> -1;
  • mergesort.c: подключение string.h избыточно;
  • mergesort.c: смущает обилие кастов (visual noise, затрудняет чтение), замена типа переменной data на char* напрашивается (как минимум).

Итог: 8.5/10.

comment:6 Changed 5 years ago by potryasaeva.anna

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

comment:7 Changed 5 years ago by Артур Гулецкий (huletski)

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

Изменения ничего не поломали, по стилю все еще есть замечания:

  • в mergesort.c все еще есть строки по 100+ символов -> -0.5;
  • сломался единый стиль отступов -> -0.5;
  • условие не вынесено в переменную - ок, если считаете, что без этого лучше;
  • подключение string.h в mergesort.c избыточно;
  • теперь в коде выполняются арифметические операции с указателями на void (расширение GCC), это не по стандарту. Измените код так, чтобы он компилировался с -pedantic-errors -> -0.5.

Итог: 8.5/10.

comment:8 Changed 4 years ago by Артур Гулецкий (huletski)

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

Дедлайн.

Note: See TracTickets for help on using tickets.