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
Owner: | changed from Egor Suvorov to subbotina.olesya |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:3 Changed 5 years ago by
Owner: | changed from subbotina.olesya to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:4 Changed 5 years ago by
Owner: | changed from Egor Suvorov to subbotina.olesya |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность:
print
должен вывести перевод строки не после каждого элемента, а один раз в конце. См. пример в условии.
По корректности те же 5/7.
По стилю 2.5/3:
- Имя
tmp
всё ещё встречается в коде, надо убрать. - Не сошлись отступы в
clist.c
: вapply
два пробела, в остальных местах четыре. Сделайте хотя бы внутриclist.c
одинаково. А лучше — во всём проекте (clang-format в помощь). - Лучше не
assert(argv[1])
, а проверитьargc
напрямую. - Добавьте ветки
else
к парсингу аргументов. Например,else assert(!"Only 'loadtext' is supported");
.
comment:5 Changed 5 years ago by
Owner: | changed from subbotina.olesya to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:6 Changed 5 years ago by
Owner: | changed from Egor Suvorov to subbotina.olesya |
---|
Некорректный формат в бинарных данных: в условии требуется записывать 4 байта, а не 3. Но если вы сейчас просто поменяете 4 на 3, то получите UB. Плюс надо использовать wb
, а не w
.
По стилю:
- Не сошлись отступы в
clist.c
comment:7 Changed 4 years ago by
Owner: | changed from subbotina.olesya to Egor Suvorov |
---|
comment:8 Changed 4 years ago by
Owner: | changed from Egor Suvorov to subbotina.olesya |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность есть: 7/7.
По стилю 1.5/3:
- В
count
не надо писать(void)node
, этот аргумент вполне используется внутриassert
. Аналогично в остальных функциях. - Поехали отступы в
save_bin
. - Лучше считывать не побайтово (а если побайтово, то функцией
fgetc()
), а пачками сразу по три байта. Можно даже соответствующую функцию сделать. Тогда - Лучше не
> 3
и< 6
, а>= 4
(минимальное количество аргументов) и<= 5
(максимальное). А ещё лучше — оставить только>= 4
, а остальные проверки добавить в конкретные ветки с==
. - Переменные
x
/y
/new_x
/new_y
должна быть объявлена внутри цикла. Аналогично с остальными.
comment:9 Changed 4 years ago by
Owner: | changed from subbotina.olesya to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
comment:10 Changed 4 years ago by
Owner: | changed from Egor Suvorov to subbotina.olesya |
---|
Корректность есть, по стилю почти (2.5/3):
- Лучше в ветке для
count
поставитьassert(argc == 4);
, а вместоassert(argv[4]);
ставитьassert(argc == 5);
- В
load_bin
/save_bin
будет сильно удобнее считать массив из трёх байт, а потом написать одну формулу. Сейчас вперемешку идёт ввод-вывод и формулки, сложно читать-проверять. - Ещё вместо
256 * x
лучше написатьx << 8
. Только осторожно с приоритетами операторов, у сдвига он маленький. new_x
/new_y
— не очень названия. Когда добавите массив, лучше сказать, что это данные из файла/буфер, наверное.- В
save_bin
не по делу инициализируются переменныеx
иy
. - Объявите
new_x
/new_y
внутри цикла. load_bin
иsave_bin
стоит реализовать одинаковым образом. Сейчас вload_bin
у вас цикл развёрнут руками, а вsave_bin
используетсяfor
.
comment:11 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Корректность:
print
должна вывести перевод строки в конце (+0.5).Баллы 5/7:
Стиль 2/3:
apply
: лучше напишитеfor
, а неwhile
.main
стоит понаставитьassert
наargc
во всех случаях.(*((int*)data))++
, можно меньше.x != NULL
пишите простоx
.savetext
сделайте циклfor
и назовите переменную неtmp
, а как-то так, чтобы отражать, что в ней по смыслу лежит.while (fscanf(...) >= 0)
— лучше== 2
.loadtext
/savetext
— в Си принятsnake_case
.