Opened 3 years ago

Closed 3 years ago

#242 closed ожидается проверка (задача сдана)

HW 1

Reported by: morozov.nikita Owned by: Святослав Власов
Component: HW #1 (BMP) Version: 3.0
Keywords: Cc:

Description


Change History (7)

comment:1 Changed 3 years ago by Святослав Власов

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

Корректность -- 10/20
В хедерах выходного файла размер файла и изображения неверные
В качестве паддинга нужно записывать нулевые байты. Явно в формате этого не требуется, но иные байты расстраивают наши тесты, поэтому давай это будут нули. А '0' -- это не нулевой байт, это код символа 0. Нулевой байт -- это '\0' или просто 0.

Стиль -- 1/10

  1. В структуре пикселя цветовые каналы идут не в том порядке. Посмотри в доке в каком порядке они должны идти.
  2. Выделенную память нужно проверять ассертами
  3. Паддинг (выравнивание строк) можно прочитать одним чтением, а не делать это в цикле. А еще лучше выделить память под строку вместе с паддингом и прочитать её целиком.
  4. Побайтово копировать пиксели в функции crop тоже не нужно. Ты можешь копировать куски строк целиком, командой memcpy.
  5. Аналогично в функции save_bmp -- писать по одному пикселю так себе идея, когда можно писать сразу строками.
  6. Если у тебя структура хедера лежит в структуре bmp_file и существует неразрывно с ним, то лучше хранить её там по значению.
  7. Если запустить программу без аргументов -- у тебя UB. Не надо так, поставь ассерт на argc.
  8. Структуру с bmp изображением лучше хранить на стеке, чем на куче.
  9. Может освобождение ресурсов в main куда-то вынести или как-то иначе организовать проверку, а то у тебя там копипаста, это плохо.

comment:2 Changed 3 years ago by morozov.nikita

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

comment:3 Changed 3 years ago by Святослав Власов

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

Корректность -- 15/20
При записи bmp когда пишешь байты выравнивания, читаешь не из своей памяти (потенциально это сегфолт) и как следствие пишешь мусор. Переменная zero -- это char, один байт у неё размер. А читаешь ты по адресу этой переменной сколько байт?

Стиль -- 9/10

  1. Считать в цикле паддинг -- такое себе решение. Придумай формулу, это не сложно.

Бонус работает, но без полного балла за корректность не могу зачесть (новые правила).

comment:4 Changed 3 years ago by morozov.nikita

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

comment:5 Changed 3 years ago by Святослав Власов

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

Корректность совсем сломалась -- куски изображения вырезаются неверно, размер изображений считается тоже криво, совсем беда.

Стиль -- ок, 10/10

comment:6 Changed 3 years ago by morozov.nikita

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

comment:7 Changed 3 years ago by Святослав Власов

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

40/40

Note: See TracTickets for help on using tickets.