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
Type: | ожидается проверка → ожидаются исправления |
---|---|
Version: | 1.0 → 2.0 |
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
final
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
Все так же не работает обработка прямоугольных изображений (в выходных изображениях сложно угадать ожидаемое).
Стиль
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
UPD: пересмотрел оценку корректности вашего решения относительно других решений.
Визуально из изображения без padding'ов (lena_512.bmp из условия) новые изображения генерируются верно, но бинарно файлы не совпадают (как минимум из-за отсутствия обновления полей заголовков, хранящих размеры файла и изображения).
Тесты, в которых исходное изображение содержит padding'и, не работают совершенно: valgrind находит ошибки (при отключенном sanitizer'e), в выходные изображения сильно отличаются от ожидаемых.
Обновленный балл за корректность - 10.
comment:5 Changed 4 years ago by
Resolution: | задача сдана |
---|---|
Status: | closed → reopened |
Дедлайн продлен до 22:59 7.12. Увеличить баллы можно только за корректность при условии, что дописаны проверки возвращаемых значений для вызовов fread, fwrite, fseek, malloc, fopen и в определениях заголовках bmp файла используются лишь типы фиксированного размера.
comment:6 Changed 4 years ago by
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
Resolution: | → задача сдана |
---|---|
Status: | reopened → closed |
Корректность
Работа с прямоугольными изображениями не реализована. Smake-test на лене проходит.
Стиль
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 (т.к. код еще будет дописываться).