Opened 4 years ago

Closed 4 years ago

#527 closed ожидаются исправления (задача сдана)

HW #1

Reported by: pshek.maksim Owned by: Артур Гулецкий (huletski)
Component: HW #1 (BMP) Version: 3.0
Keywords: Cc:

Description

Кропы и повороты Лены должны работать корректно.

Change History (7)

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

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

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

Работа с прямоугольными изображениями не реализована. Smake-test на лене проходит.

  • padding не обрабатывает при чтении;
  • не обновляются поля заголовков, связанные с размерами файла/изображения.

Стиль

include/bmp.c

6: зачем создавать синонимы типов, если можно использовать типы фиксированного размера непосредственно при описании полей структур;
19: имена, состоящие из заглавных букв, обычно используются для обозначения макросов;
37: зачем отключать выравнивание для этой структуры? Аббревиатуры в именах в формате camelCase обычно трактуются как слова: customBmp. Имена типов чаще задают либо snake_case’ом (первые буквы слов строчные), либо CamelCase’ом (первая буква прописная).

src/main.c

13: не соблюдается единый стиль отступов;
28: если load_bmp выделяет память, то лучше сделать функцию в bmp.c, которая эту память освобождает.

src/bmp.c

1: стандартные заголовочные файлы подключаются, используя угловые скобки;
4: подключать нужно без указывания относительного пути (#include “bmp.h”);
11: нужно проверять успешность выделения памяти;
16: что значит 14?
16: нужно проверять возвращаемое значение, чтобы проверить завершилась ли fread успешно (то же самое касается других функций из stdio.h);
19: вредил вычисляется размер пикселя (он равен 3) -> имя запутывает;
26: зачем менять порядок цветовых каналов?
68: используйте memcpy для копирования нескольких последовательных байтов;
89: выглядит слишком громоздко, можно завести локальные переменны w, h для ширины и высоты, чтобы сделать запись компактнее.

Баллы: корректность 5, стиль 3 (т.к. код еще будет дописываться).

comment:2 Changed 4 years ago by pshek.maksim

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

final

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

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

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

Все так же не работает обработка прямоугольных изображений (в выходных изображениях сложно угадать ожидаемое).

Стиль

include/bmp.h

19: типы должны быть фиксированного размера, размер int строго не задан;
36: имя запутывает - в переменной хранится не файл, а заголовок.

src/main.c

1: подключать надо не по относительному пути: #include “bmp.h”;
14: лучше assert(argc == 8);

src/bmp.c

24: 14 все-таки нужно заменить; например, на sizeof(*bmp->bitmapfile);
25, 66: 40 - аналогично;
26: успешность чтения проверяется при помощи сравнения значение, которое вернула функция fread, с числом считываемых элементов;
40: для индексов в общем случае лучше использовать size_t;
43: fseek тоже может завершиться с ошибкой -> нужно проверять успешность выполнения;
50: неясно зачем нужно преобразование BGR->RGB;
65: успешность выполнения fwrite не проверяется;
69: 100+-символьная строка.

+ часть замечания из предыдущего комментария.

Баллы: корректность 5 (лучше прямоугольным изображениям не стало), стиль 6.

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

UPD: пересмотрел оценку корректности вашего решения относительно других решений.

Визуально из изображения без padding'ов (lena_512.bmp из условия) новые изображения генерируются верно, но бинарно файлы не совпадают (как минимум из-за отсутствия обновления полей заголовков, хранящих размеры файла и изображения).
Тесты, в которых исходное изображение содержит padding'и, не работают совершенно: valgrind находит ошибки (при отключенном sanitizer'e), в выходные изображения сильно отличаются от ожидаемых.

Обновленный балл за корректность - 10.

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

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

Дедлайн продлен до 22:59 7.12. Увеличить баллы можно только за корректность при условии, что дописаны проверки возвращаемых значений для вызовов fread, fwrite, fseek, malloc, fopen и в определениях заголовках bmp файла используются лишь типы фиксированного размера.

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

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

Версия 2355, проблемы те же. Похоже, вы забыли загрузить изменения:

{hw_01}[2008]$ pwd && svn up && svn status
/home/hfx/dvl/cpp19/pshek.maksim/hw_01
Updating '.':
At revision 2355.
{hw_01}[2009]$ svn log
------------------------------------------------------------------------
r2162 | pshek.maksim | 2019-11-29 02:23:48 +0300 (Пт, 29 ноя 2019) | 1 line

finally
------------------------------------------------------------------------
r2158 | pshek.maksim | 2019-11-28 23:44:09 +0300 (Чт, 28 ноя 2019) | 1 line

not_final
------------------------------------------------------------------------
r2047 | pshek.maksim | 2019-11-24 22:56:29 +0300 (Вс, 24 ноя 2019) | 1 line

ready
------------------------------------------------------------------------

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

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