Opened 3 years ago

Closed 3 years ago

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

HW #1

Reported by: Станислав Михайлов Owned by: Святослав Власов
Component: HW #1 (BMP) Version: 2.0
Keywords: Cc:

Description

Пока что работает только на квадратных изображениях, тестировал на "Лене". С неквадратными и не делящимися на 4 пока возникают некоторые проблемы, буду исправлять. Проверка аргументов пока что отсутствует и некоторые строки длинной больше 80 символов.

Change History (3)

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

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

Корректность за повернутую квадратную Лену пока 5/20
С остальными изображениями, совершенно верно, ничего пока не работает

Стиль -- 4/10

  1. Использовать int в объявлении структуры, которую ты читаешь с диска -- это ошибка. Размер int зависит от компилятора, платформы и иногда положения сатурна в водолее. Для стандартного gcc под linux-x86 он действительно будет 4 байта, как ты ожидаешь, но в общем случае это может оказаться не так. Можно скомпилировать под x64 и он будет 8 байт, тогда весь твой код будет работать неверно. Для того, чтобы не зависить от компилятора, используй типы данных с точной длиной -- uint32_t и т.п..
  2. Читать структуры по полям друг за дружкой -- ты сам убедился какой гемор. Для того я и рассказывал про выравнивание и как оно отключается (что ты кстати успешно сделал), чтобы вы могли читать заголовки у изображения целиком в структуру и писать также, а не городить всякие read_u16 и прочее.
  3. Структуры можно копировать друг в друга обычным присваиванием, нет никакого резона вот так писать:
    cropped_pixels[i - y][j - x].rgbBlue = pixels[i][j].rgbBlue;
    cropped_pixels[i - y][j - x].rgbGreen = pixels[i][j].rgbGreen;
    cropped_pixels[i - y][j - x].rgbRed = pixels[i][j].rgbRed;
    
  4. Кстати в rotate ты уже пишешь нормально
  5. Пиксели не обязательно читать и писать по одному -- можно делать это сразу строками, они ведь последовательно в памяти друг за дружкой лежат
  6. load_pixels, create/free_mat -- это функции относящиеся к работе с изображениями, им место в bmp.c, а не main.c
  7. Зачем тебе COLS во free_mat?

comment:2 Changed 3 years ago by Станислав Михайлов

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

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

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

По прежнему квадратная Лена целиком поворачивается без проблем, а на всех остальных тестах валгринд детектит ошибки или результат оказывается неверным.

По стилю мне не нравится, что ты по прежнему читаешь и пишешь побайтово там, где это можно делать построчно и низкая локальность кода, у тебя много кода работающего с пикселями, вычисляющего паддинг и выделяющего память находится в main.
7/10 стиль
5/20 корректность.

Note: See TracTickets for help on using tickets.