Change History (7)

comment:1 Changed 5 years ago by podoprigora.ivan

Пока что реализованы функции загрузки, поворота и сохранения

comment:2 Changed 5 years ago by Артур Гулецкий (huletski)

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 Артур Гулецкий (huletski)

Version: 1.0

comment:4 Changed 4 years ago by podoprigora.ivan

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Теперь вроде всё работает, включая работу с выравниванием. Добавил проверку аргументов.

comment:5 Changed 4 years ago by Артур Гулецкий (huletski)

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 podoprigora.ivan

Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:7 Changed 4 years ago by Артур Гулецкий (huletski)

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

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

Ок, работает.

Стиль

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.

Note: See TracTickets for help on using tickets.