Opened 5 years ago

Closed 5 years ago

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

WW #3

Reported by: kozubaev.nurmukhammad Owned by: Egor Suvorov
Component: WW_intrusive_list Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to kozubaev.nurmukhammad
Type: ожидается проверкаожидаются исправления

Корректность 7/8:

  1. print выводит лишний пробел в конце строки.
  2. Если скормить на вход очень длинную команду, то переполнится буфер str, будет UB.
  3. clist.c должен подключать <stdlib.h> самостоятельно, а не через clist.h — в последнем нужен только <stddef.h> для offsetof, а вот в первом нужен <stdlib.h> для malloc.

Стиль 1.5/4:

  1. Лишняя пустая строчка в начале clist.h
  2. Отделяйте include от кода пустой строкой.
  3. Лучше не if (x != NULL), а просто if (x).
  4. Ставьте пробелы вокруг бинарных операторов: x[a + b] = y[c];
  5. Ставьте пробелы между for/while/if и следующей скобочкой: while (1), не while(1). Аналогично с else.
  6. Ставьте пробелы перед открывающей фигурной скобкой: while (1) {, а не while (1).
  7. В remove_points запускайте макрос container_of не три раза, а только один. Сделайте переменную.
  8. Аналогично в show_all_points.
  9. Не надо брать вызов макроса container_of в скобочки.
  10. Объявляйте переменные в самом вложенном месте, где они в первый раз нужны. Например, a и b.
  11. А ещё a и b — плохие названия для X/Y-координат точки.
  12. Не надо выделять память под фиктивный элемент в куче при помощи malloc. Выделите её прямо в структуре, заведите поле.
  13. Вместо if (strcmp() == 0) лучше if (!strcmp())
  14. Вместо while (strcmp() == 0) лучше while (true), обработать команду exit так же, как остальные (а не "игнорированием) и сделать break.
Last edited 5 years ago by Egor Suvorov (previous) (diff)

comment:2 Changed 5 years ago by kozubaev.nurmukhammad

Owner: changed from kozubaev.nurmukhammad to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

С scanf как понимаю была в 1 символе ошибка. Исправил. По стилю тоже прошелся.

comment:3 Changed 5 years ago by Egor Suvorov

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

К сожалению, уже после дедлайна, так что только как дорешивание.

Корректность 7.5/8:

  1. Если скормить на вход очень длинную команду, то Unknown command выведется несколько раз.

Стиль 3/4:

  1. printf("%s", "foo"); лучше заменить на printf("foo");, аналогично с printf("%c", 'x');
  2. Перевод строки лучше выводить в show_all_points
  3. Ставьте пробелы между for/while/if и следующей скобочкой: while (1), не while(1). Аналогично с else.
  4. Ставьте пробелы перед открывающей фигурной скобкой: while (1) {, а не while (1).
  5. В remove_point/remove_all_points лучше вместо дополнительной переменной next менять напрямую cur внутри цикла: for (intrusive_node *cur = l->head.next; cur;) { ... }
  6. Пробел слева от запятой в int x , y; не нужен
  7. Скобочки в &(a->b) не нужны: просто &a->b.
  8. В add_node лучше сначала установить все значения у node, а потом у соседей. Или сначала разобраться с предыдущим соседом, а потом со следующим. Сейчас вы сначала ставите ссылку на следующего, потом ссылку с предыдущего, потом на предыдущего, потом со следующего.

Баллы поставил в табличку в примечания, чтобы не забыть.

Если хотите дорешать — смело переоткрывайте тикет.

Note: See TracTickets for help on using tickets.