#241 closed ожидается проверка (задача сдана)
WW #3
Reported by: | potryasaeva.anna | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
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
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Все работает, +12.
В целом хорошо, замечания следующие:
- разный стиль отступов в
main.c
и вclist.c
; - при чтении строки в буфер, используя
scanf
, нужно ограничивать максимальное число считываемых символов размерами буфера (заменив%s
на%9s
(размер буфера - 1) в первом аргументе), чтобы избежать переполнения буфера при некорректном вводе и, как следствие, UB; - предполагалось, что размер списка будет вычисляться каждый раз при вызове
get_length
, а не храниться в полеsize
; l->size++;
выглядит более "естрественно", чем++l->size;
, компилятор скорее всего сгенерирует одинаковый код для обоих statement'ов.
comment:4 Changed 5 years ago by
UPD: замечание по "архитектуре"
main.c:51, l->size = 0;
. Лучше так не делать, так как поле size
является (по смыслу) скорее "внутренним" полем списка -> инварианты, связанные с ним (e.g. l->size == 0
<-> l->head == NULL
), поддерживаются функциями, реализующими базовую работу со структурой данных (в clist.c
). Пользователь структуры данных (код main.c
), модифицируя внутреннее состояние извне, в общем случае может нарушать поддерживающиеся инварианты.
Note: See
TracTickets for help on using
tickets.
В решении присутствуют артефакты сбoрки (
lab_03
иobj
), их необходимо удалить:Кроме того, решение падает на последовательности команд, приведенной в качестве примера в задании: