Change History (3)

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

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

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

  • неправильно обновляются поля заголовков, хранящие размеры файла/изображения. Hint: padding

Стиль

include/bmp.c

7: лучше определить две структуры, описывающие заголовки, как в описании формата;
7: имена, состоящие из прописных букв, обычно используются для обозначения макросов;
7, 26: определения структур можно вынести в bmp.c;
32: зачем отключать выравнивание для этой структуры?

src/main.c

14: зачем печатать количество аргументов?

src/bmp.c

11: нужно проверять возвращаемое значение fread для обнаружения ошибок;
12, 114: дублирование нетривиального кода, нужно вынести в функцию;
12: misleading name. s/empty_bytes/padding_sz;
21: что мешает считывать построчно, а не попиксельно?
24: fseek может завершиться с ошибкой, нужно проверять возвращаемое значение;
15, 32: дублирование логики создания двумерного массива, можно вынести в отдельную функцию;
40: вместо i, j, k, l лучше использовать более осмысленные имена (например, orig_row_i, crop_col_i и т.п.);
54: что значит 54?

Максимально избавляйтесь от дублирования кода (его много, указал в замечаниях не все), добавляйте проверки значений, которые возвращают функции ввода-вывода.

Баллы: корректность 16, стиль 6.5.

comment:2 Changed 4 years ago by stotskiy.nikita

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

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

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

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

Ок.

Стиль

include/bmp.h

13: лучше добавить разделители в имена: bitmap_file_header;
33: лучше назвать pixel или bgr_pixel, порядок байт лучше сделать bgr, как в bmp (хранятся в памяти программы они в bgr порядке, а не в rgb);
52, 54, 56: насколько я понял, эти функции не предполагается использовать вне src/bmp.c -> в bmp.h из объявлять не надо, в bmp.c нужно пометить как static.

src/bmp.c

16-18: читать можно было построчно: fread(image.data[i], sizeof(*image.data[i]), image.infoheader.biWidth, f);
26: s/a/cropped_image;
40-46, 66-72: дублирование функции копирования массива;
40, 66: почему не написать image->data = a и выйти из функции, зачем еще раз копировать?
50: s/a/rotated_image;
83: записывать изображение можно было построчно;

Баллы: корректность 20, стиль 8.5.

Note: See TracTickets for help on using tickets.