Opened 5 years ago
Closed 5 years ago
#326 closed ожидается проверка (задача сдана)
WW#4
Reported by: | gabitov.daniil | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | WW_mergesort | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Не работает сортировка строк, в частности пример из задания:
{lab_04}[2046]$ pwd && svn up && svn status /home/hfx/dvl/cpp19/gabitov.daniil/lab_04 Updating '.': At revision 1601. {lab_04}[2047]$ make mkdir obj gcc -c -Wall -Wextra -Werror -std=c99 -fsanitize=address -g -o obj/mergesort.o src/mergesort.c -Iinclude gcc -c -Wall -Wextra -Werror -std=c99 -fsanitize=address -g -o obj/main.o src/main.c -Iinclude gcc -fsanitize=address obj/mergesort.o obj/main.o -o lab_04 {lab_04}[2048]$ ./lab_04 str foo bar bazooka baz baz bazooka bar foo
Тесты частично проходят -> +4.
Замечания:
- массивы с переменным размером в общем случае лучше не использовать, так как стека может не хватить. Используйте динамическую память;
- объявление
cpy
лучше убрать изmergesort.h
, так как она "локальна" дляmergesort.c
; - mergesort:50. Цикл выглядит избыточным, почему не копировать из
tmp_cur
вarray
elem_sz * elem_nm
байт? - можно ли как-то изменить сигнатуру
cpy
для того, чтобы можно было легче (~логичнее) запомнить копирование происходит из первого массива во второй или наоборот?
--
Итог: 4/10, доделывайте.
comment:4 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:5 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Поведение на пустом массиве:
{lab_04}[2123]$ pwd && svn up && svn status && make /home/hfx/dvl/cpp19/gabitov.daniil/lab_04 Updating '.': At revision 1629. mkdir obj gcc -c -Wall -Wextra -Werror -std=c99 -fsanitize=address -g -o obj/mergesort.o src/mergesort.c -Iinclude gcc -c -Wall -Wextra -Werror -std=c99 -fsanitize=address -g -o obj/main.o src/main.c -Iinclude gcc -fsanitize=address obj/mergesort.o obj/main.o -o lab_04 {lab_04}[2124]$ ./lab_04 int What am i supposed to do? Give me some data!
Отвечая на вопрос: передали пустой массив, а он - отсортированный массив -> вывести его. Могли бы еще usage напечатать (хотя в условии было сказано, что пустой массив - корректные данные).
Замечания:
- странный стиль расстановки пустых строк: между include-ами и cpy - ни одной, между cpy и mergesort - три;
- порядок аргументов в
cpy
: дали осмысленные имена аргументам -> стало получше, но все равно недостаточно интуитивно. Семантическиcpy
реализует операцию присваивания содержимого блоков памяти (а-ляstrcpy
). Для встроенных типов присваивание записывается какa = b ~> =(a, b)
(левый - приемник, правый - источник). Если перенести тот же принцип на специальное присваивание по значению, тоdata1 =_by_value data2 -> data1 cpy data2 -> cpy(data1, data2, <details>)
. Кроме того, стандартнаяmemcpy
имеет такой же порядок аргументов (приемник, источник). - после вызова
malloc
не проверяется была ли выделена память, не забывайте это делать (если выделить не удалось, можно падать по assert'у).
--
Итог: 10
Note: See
TracTickets for help on using
tickets.
Собирается (+0.01), вывод отличается от ожидаемого: