Opened 5 years ago

Closed 4 years ago

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

WW #5

Reported by: subbotina.olesya Owned by: subbotina.olesya
Component: WW_c_io Version: 3.0
Keywords: Cc:

Description


Change History (11)

comment:1 Changed 5 years ago by Egor Suvorov

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

Корректность:

  1. Команда print должна вывести перевод строки в конце (+0.5).

Баллы 5/7:

  • Корректный Makefile и структура папок +1
  • Корректные заголовочные файлы +0.5
  • Во всех исходных файлах подключены нужные заголовки и только они +0.5
  • Корректное разделение по файлам, корректная реализация списка +1
  • Корректно работает загрузка из текстовых файлов (в том числе отрицательные координаты) и команда print реализована при помощи apply (возможно, без параметра void *data) +1
  • Корректно реализована команда count при помощи apply и без глобальных переменных +0.5
  • Корректно работает запись текстовых файлов +0.5

Стиль 2/3:

  1. apply: лучше напишите for, а не while.
  2. В main стоит понаставить assert на argc во всех случаях.
  3. Много скобочек в (*((int*)data))++, можно меньше.
  4. Вместо x != NULL пишите просто x.
  5. Уберите закомментированный код.
  6. В savetext сделайте цикл for и назовите переменную не tmp, а как-то так, чтобы отражать, что в ней по смыслу лежит.
  7. while (fscanf(...) >= 0) — лучше == 2.
  8. loadtext/savetext — в Си принят snake_case.
Last edited 5 years ago by Egor Suvorov (previous) (diff)

comment:2 Changed 5 years ago by Egor Suvorov

P.S. Попытка засчитана, окончательный дедлайн - 3 ноября, 22:59.

comment:3 Changed 5 years ago by subbotina.olesya

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

comment:4 Changed 5 years ago by Egor Suvorov

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

Корректность:

  1. print должен вывести перевод строки не после каждого элемента, а один раз в конце. См. пример в условии.

По корректности те же 5/7.

По стилю 2.5/3:

  1. Имя tmp всё ещё встречается в коде, надо убрать.
  2. Не сошлись отступы в clist.c: в apply два пробела, в остальных местах четыре. Сделайте хотя бы внутри clist.c одинаково. А лучше — во всём проекте (clang-format в помощь).
  3. Лучше не assert(argv[1]), а проверить argc напрямую.
  4. Добавьте ветки else к парсингу аргументов. Например, else assert(!"Only 'loadtext' is supported");.

comment:5 Changed 5 years ago by subbotina.olesya

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

comment:6 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to subbotina.olesya

Некорректный формат в бинарных данных: в условии требуется записывать 4 байта, а не 3. Но если вы сейчас просто поменяете 4 на 3, то получите UB. Плюс надо использовать wb, а не w.

По стилю:

  1. Не сошлись отступы в clist.c

comment:7 Changed 4 years ago by subbotina.olesya

Owner: changed from subbotina.olesya to Egor Suvorov

comment:8 Changed 4 years ago by Egor Suvorov

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

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

По стилю 1.5/3:

  1. В count не надо писать (void)node, этот аргумент вполне используется внутри assert. Аналогично в остальных функциях.
  2. Поехали отступы в save_bin.
  3. Лучше считывать не побайтово (а если побайтово, то функцией fgetc()), а пачками сразу по три байта. Можно даже соответствующую функцию сделать. Тогда
  4. Лучше не > 3 и < 6, а >= 4 (минимальное количество аргументов) и <= 5 (максимальное). А ещё лучше — оставить только >= 4, а остальные проверки добавить в конкретные ветки с ==.
  5. Переменные x/y/new_x/new_y должна быть объявлена внутри цикла. Аналогично с остальными.

comment:9 Changed 4 years ago by subbotina.olesya

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

comment:10 Changed 4 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to subbotina.olesya

Корректность есть, по стилю почти (2.5/3):

  1. Лучше в ветке для count поставить assert(argc == 4);, а вместо assert(argv[4]); ставить assert(argc == 5);
  2. В load_bin/save_bin будет сильно удобнее считать массив из трёх байт, а потом написать одну формулу. Сейчас вперемешку идёт ввод-вывод и формулки, сложно читать-проверять.
  3. Ещё вместо 256 * x лучше написать x << 8. Только осторожно с приоритетами операторов, у сдвига он маленький.
  4. new_x/new_y — не очень названия. Когда добавите массив, лучше сказать, что это данные из файла/буфер, наверное.
  5. В save_bin не по делу инициализируются переменные x и y.
  6. Объявите new_x/new_y внутри цикла.
  7. load_bin и save_bin стоит реализовать одинаковым образом. Сейчас в load_bin у вас цикл развёрнут руками, а в save_bin используется for.

comment:11 Changed 4 years ago by Egor Suvorov

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.