Язык программирования С, лабораторная работа 2.
Структуры.

Задания

  1. Построение "ковра Серпинского".

    Дано:
    в первой строке одно натуральное значение - исходный размер стороны "ковра Серпинского", во второй - количество итераций для получения результирующего фрактала.

    Найти:
    сформировать "ковер Серпинского"

    Требования и рекомендации:
    Для решения задачи следует сформировать массив squares из необходимого количества структур типа square_t (координаты левого верхнего угла и длина стороны), описывающих квадрат, который будет изыматься из центров исходных квадратов на каждой итерации. Рекомендуется использовать рекурсивное решение.

    Результат:
    вывод полученного фрактала в формате ppm P3. Вывод должен завершаться набором строк комментариев, в каждой из которых описывается очередной квадрат (содержимое 3-х полей структуры square_t) из массива squares.

  2. Построение "мозаики".

    Дано:
    в первой строке два натуральных значения через пробел - размер графического поля. Во второй и последующих строках по семь натуральных значений - канонизированные координаты прямоугольника и его цвет в формате RGB. Ввод завершает строка, состоящая из 7 нулей.

    Найти:
    сформировать "мозаику" - графическое изображение на белом фоне, состоящее исключительно из непересекающихся разноцветных прямоугольников в однопискельных черных рамках. Для этого исходные прямоугольники поледовательно, в порядке поступления, накладываются на изображение, начиная прямоугольника - графического поля.

    Требования и рекомендации:
    Для построения изображения следует на основе исходных данных сформировать массив rects, который прямо и косвенно будет содержать структуры типа rect_t(координаты левого верхнего и правого нижнего углов), исходных или модифицированных прямоугольников. Первым прямоугольником считать графическое поле. Под модификацией прямоугольника понимается его уничтожение или разбиение на минимально возможное количество частей в случае наложения на него последующего(их) прямоугольника(ов). При подобном наложении возможно полное сокрытие исходного прямоугольника, сокращение его размеров, а также разбиение на 2, 3 или 4 части, в зависимости от способа наложения. Таким образом, анализ наложения каждого последующего прямоугольника может в значительной степени изменить существующий набор прямоугольников, от полного уничтожения, до увеличения их количества в несколько раз.

    Результат:
    вывод полученной "мозаики" в формате ppm P3. Вывод должен завершаться набором строк комментариев, в каждой из которых описывается очередной прямоугольник (содержимое 4-х полей структуры rect_t) из массива rects.