Opened 5 years ago
Closed 4 years ago
#496 closed ожидается проверка (задача сдана)
HW #1
Reported by: | podoprigora.ivan | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #1 (BMP) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (7)
comment:1 Changed 5 years ago by
comment:2 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Корректность
Порядок аргументов перепутан (второй - выходной файл, третий - входной).
Работает поворот изображения из условия, не работает поворот прямоугольного изображения.
Стиль
include/bmp.h
8: лучше определить bmp и dib заголовки в разных структурах в bmp.c
, а в bmp.h
оставить определение структуры, которая описывает представление изображения в памяти программы;
src/main.c
9: проверяйте переданные аргументы на корректность (хотя бы их количество);
10: строка избыточна.
src/bmp.c
1: подключайте bmp.h, чтобы удостовериться, что определения функций совпадают с объявлениями;
29: не проверяется удалось ли открыть файл;
31: что значит 54? не проверяется успешность чтения заголовка.
Не заметил логику, которая обрабатывает выравнивание строк изображения, если размер строки не кратен 4.
Баллы: корректность 1, стиль 3 (т.к. код еще будет изменяться).
comment:3 Changed 5 years ago by
Version: | → 1.0 |
---|
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Теперь вроде всё работает, включая работу с выравниванием. Добавил проверку аргументов.
comment:5 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Корректность
Не обновляется поле заголовка, хранящее размер файла.
Стиль
src/main.c
3: избыточное подключение string.h.
include/bmp.h
8: дублирование определения структуры (из src/bmp.c);
8: лучше определить две структуры, соотвествующие заголовкам BMP файла, как в описании формата. Это сделает код очевиднее;
src/bmp.c
1: не подключается bmp.h -> дублирование struct bmp_header, компилятор не проверяет соответствие сигнатур в определений и объявлений функций;
29: отсутствует проверка успешности открытия файла;
31: отсутствие проверка успешности считывания;
31: 54?
33, 56: дублирование кода;
33: (opt) s/8/CHAR_BIT
39: отсутствует проверка успешности выделения памяти;
71: можно сделать тип zero int32_t и записывать нулевые байты из него без цикла (т.к. знаем что padding < 4);
88: 100+ символьная строка;
Баллы: корректность 18, стиль 7.5
comment:6 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:7 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
Ок, работает.
Стиль
src/main.c
19, 26: дублирование освобождения ресурсов. Убрать дублирование можно было бы с помощью goto (как разбиралось на практике, посвященной использованию библиотеки expat).
include/bmp.h
3: лучше передавать структуру по указателю, т.к. размер ее относительно большой.
src/bmp.c
12: что такое 54?
14, 38: дублирование кода вычисления выравнивания, нужно было вынести в отдельную функцию;
27, 28, 48: отсутствуют проверки успешности выполнения функций fread, fseek, fwrite; нужно было проверять значения, которые они возвращают;
36: отсутствует проверка успешности выполнения fopen;
49: s/move/padded_width_sz
64, 68: отсутствуют проверки возвращаемого значения malloc;
68, 91: 100+ символов в строке;
79: s/p/outdated, например.
Баллы: корректность 20, стиль 7.5.
Пока что реализованы функции загрузки, поворота и сохранения