Opened 3 years ago

Closed 3 years ago

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

HW #1 (BMP), garaev.timur, hw_01

Reported by: Garaev Timur Owned by: Антон Филатов
Component: HW #1 (BMP) Version: 3.0
Keywords: Cc:

Description

Было тяжко сходу закодить эту прелесть, честно.

Особенно в конце, когда я получил 1,6кк потерянных байт на картинке 300x300 :)

Вообще, там еще ваогринд поругивается, но уже капельку и совсем не на память. Я так и не смог разобраться, на что именно.

Change History (5)

comment:1 Changed 3 years ago by Антон Филатов

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

Так, ну могу вам сказать, что целиком лену он поворачивает без ошибок :) один пройденный тест у вас есть.
В остальном действительно частенько ругается валгринд. Любопытно ещё, что на тесте
crop-rotate lena_512.bmp out 100 50 128 128
прям совсем падает с сегфолтом (или не с сегфолтом, но экзит статус не 0)

Кстати, заметил, что вы совсем не трогаете image size и file size в заголовке bmp - не надо так.

Стиль:

  • кажется, что можно эффективнее выделять память под выходной массив, чем вызов malloc-а столько раз, какая высота картинки
  • констант много волшебных
  • const int PADDING_SIZE = (4 - (DIB.width * 3 % 4)) % 4; - просится в отдельную функцию

В общем, вы на правильном пути. К сожалению конкретно что именно вам поправить надо сказать не могу.
Корректность: 5/20
Стиль: 6/10

comment:2 Changed 3 years ago by Garaev Timur

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

comment:3 Changed 3 years ago by Антон Филатов

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

Заметил, что вы не оттуда поворот считаете. Вы, видимо, меня об этом на паре спрашивали, но судя по всему либо я вас не понял, либо вы меня
Тест
crop-rotate lena_512.bmp out.file 100 50 128 128
Должен отступить от левой верхней точки на 100 вправо и на 50 вниз, а после этого взять квадрат со стороной 128, где точка (100, 50) - левый верхний угол квадрата. И именно его надо поворачивать. А вы отступаете на 100,50 от нижнего угла. Так что все тесты, получается, падают.
Теперь сегфолт на тесте
crop-rotate lena_512.bmp out.file 50 100 64 32 (на самом деле не только на нём, ещё много на каких тестах) - повращайте лену с разными параметрами, проверьте

по-прежнему остаётся замечание

Кстати, заметил, что вы совсем не трогаете image size и file size в заголовке bmp - не надо так.

Стиль:

  • по-прежнему следует исправить чересчур большое количество malloc-ов при инициализации массива пикселей - можно это сделать за два маллока
  • кроме того можно оптимизировать чтение, если fread делать не по одному пикселю, а читать целиком строку
  • проверьте, у вас кое-где сломались отступы - где-то они сделаны на табах, а где-то на пробелах

Корректность: 6/20
Стиль: 7/10

comment:4 Changed 3 years ago by Garaev Timur

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

Кажется, я пофиксил padding.

Там было padding = '0' вместо padding = '\0'

comment:5 Changed 3 years ago by Антон Филатов

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

Нет, к сожалению padding вы не пофиксили. Но всё, что без паддинга - работет
Корректность: 8/20
Стиль: 10/10

Note: See TracTickets for help on using tickets.