Opened 5 years ago

Closed 5 years ago

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

WW #4

Reported by: podoprigora.ivan Owned by: Артур Гулецкий (huletski)
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description

4-я лабораторная пустая. Не успел

Change History (6)

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

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

Решение не собирается:

{lab_04}[2331]$ pwd && svn up && svn status
/home/hfx/dvl/cpp19/podoprigora.ivan/lab_04
Updating '.':
At revision 1327.
{lab_04}[2332]$ make
mkdir obj
gcc -c -Wall -Wextra -Werror -Iinclude src/mergesort.c -o obj/mergesort.o
gcc -c -Wall -Wextra -Werror -Iinclude src/main.c -o obj/main.o
gcc obj/mergesort.o obj/main.o -o lab_04
/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
Makefile:5: recipe for target 'lab_04' failed
make: *** [lab_04] Error 1

comment:2 Changed 5 years ago by podoprigora.ivan

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

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

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

Тесты решение проходит, +10.

Замечания:

mergesort.h

2: подключение stdio.h избыточное (функции/определения типов C IO не используются в сигнатурах);
6: my_memcpy можно не экспортировать, т.к. ee (по смыслу) не предполагается использовать отдельно от mergesort;
7, 8: строки по 100+ символов. Обычно ограничение на макс. длину строки - [80..100] символов.

main.c

2,3: стандартные закологовчные файлы должны быть подключены, используя угловые скобки;
7,17: нарушен единый стиль отступов -> -1;
15: comparator надо сделать локальной переменной;
19: массивы переменной длины выделяйте в динамической памяти (в общем случае может тратиться неоправданно много памяти на стеке) -> -1;

mergesort.c

25: код в блоках if-elseif очень похож, что наводит на мысль о возможности его упрощения. Hint: фактически все, что делает if - выбирает источник для копирования в i.

--
Итог: 8/10, можно доделывать еще.

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

UPD: не проверяете, что malloc (mergesort.c:23) вернул не-NULL. В этом случае решение может падать по assert'у.

Last edited 5 years ago by Артур Гулецкий (huletski) (previous) (diff)

comment:5 Changed 5 years ago by podoprigora.ivan

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

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

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

Тесты не сломались -> +10.

Замечания

mergesort.h

  • При переносе аргументов на другую строку, обычно добавляют отступы, например:
void foo(void *a, size_t a_sz,
         void *b, size_t b_sz);
  • объявляется лишняя функция merge, ее реализации нет в mergesort.c.

main.c

  • comparator - локальной переменной для функции -> стало получше. Но теперь неясно, зачем хранить указатель на функцию в переменной при текущей реализации, если можно передавать его непосредственно при вызове (пример для int: merge_sort(..., comparator_int), 25ая строка).

mergesort.c

UPD: не проверяете, что malloc (mergesort.c:23) вернул не-NULL. В этом случае решение может падать по assert'у.

проверку на успешность выделения памяти так и не добавили. Не забудьте это сделать в следующий раз.

25: код в блоках if-elseif очень похож, что наводит на мысль о возможности его упрощения. Hint: фактически все, что делает if - выбирает источник для копирования в i.

код решили не переделывать - ok.

--

Итог: 10

Note: See TracTickets for help on using tickets.