Attachments (1)

photo_2020-12-21_17-38-01.jpg (10.8 KB) - added by Святослав Власов 3 years ago.

Download all attachments as: .zip

Change History (6)

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

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

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

Корректность -- 7/20
Картинку целиком твоя программа поворачивать научилась, это здорово, но вот кусок вырезает она совсем не тот.
Например с аргументами 100 50 128 128 у тебя вырезается кусок, тот что слева, а должен тот, что справа:

Стиль -- 5/10

  1. Сразу совет -- пиксели изображения и структуры с хедерами лучше держать вместе в одной структурке, чем таскать их по отдельности из функции в функцию. Так будет логичнее, читаемее и проще.
  2. Результаты чтения из файла было бы хорошо проверять ассертами.
  3. "Магические числа" в коде мы стараемся не использовать. Там где, используется у тебя количество байт на пиксель, лучше не писать 3, а завести константу вроде bytes_on_pixel и использовать её. Это повысит читаемость кода существенно.
  4. Строки можно читать и писать целиком, а не попиксельно в цикле (то же касается выравнивания)
  5. Зачем тебе в функции free_mat количество столбцов? Мало того, что ты его не используешь, так это тебя еще и вынуждает в main высчитывать выравнивание, что там совершенно ни к месту.

comment:2 Changed 3 years ago by predelina.anastasiya

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

Поправила.

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

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

Корректность:
Теперь валгринд ругается на изображениях с паддингом и неквадратных изображениях.
Еще по коду вижу что пишешь мусор в качестве паддинга, а нужно нули.

Стиль:

  1. Раз теперь у тебя есть структурка для хранения и хедеров и пикселей, то почему в save_bmp ты передаешь их по отдельности?
  2. Скобки тут избыточны: (pict->pixels)[i], &(pict->mapinfoheader)
  3. Зачем обратный слэш в конце строк в rotate? Он никакой роли не играет. Бэкслеш нужен только в макросах и иногда в строковых литералах.
  4. В rotate пиксель можно копировать целиком memcpy, а не делать это по байтику тем более такой копи-пастой
  5. В crop тоже можно копировать кусками а не побайтово
  6. Зачем память под буфер нулей, которые ты пишешь в качестве паддинга, выделять на куче?

Буфер на стеке прекрасно с этой задачей справится.

comment:4 Changed 3 years ago by predelina.anastasiya

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

Постаралась исправить.

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

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

Все хорошо, 30/30

Note: See TracTickets for help on using tickets.