Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++ Варианты заданий курсовых работ.doc
Скачиваний:
20
Добавлен:
02.04.2015
Размер:
333.82 Кб
Скачать

Оглавление

Условие задачи.............................................................................

Способ решения...........................................................................

Принцип реализации...................................................................

Описание констант, переменных, типов................................

Общая структура программы..................................................

Используемые процедуры и функции.......................................

Модуль Stack.............................................................................

Процедура добавления элемента в стек (add)...................

Процедура извлечения элемента из стека (pop)...............

Модуль Graphic........................................................................

Модуль View.............................................................................

Головная программа................................................................

Текст программы.........................................................................

Файл с головной программой.................................................

Модуль STACK........................................................................

Модуль VIEW..........................................................................

Прогон программы......................................................................

Литература....................................................................................

Условие задачи

На плоскости задано N (1 < N < 300) прямоугольников со сторонами, параллельными координатным осям. Координаты вершин прямоугольников (х, у) - целые числа.

Найти площадь фигуры, получающейся в результате объединения прямоугольников.

Если в результате объединения прямоугольников получается больше одной фигуры, то выводить 0. Результат иллюстрировать графически.

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

Выход: прорисовка прямоугольников, рассчитанная площадь фигуры или 0, если фигур несколько.

Способ решения

Принцип решения заключается в следующем: плоскость разбивается на множество ячеек, соответствующих единичной площади. Эту площадь удобно представить в виде матрицы, элемент которой равен 1, если он является частью прямоугольника, и равен 0 в противном случае.

Пример расположения на плоскости двух прямоугольников (возможно и более, так как прямоугольники могут совпадать).

1

1

1

0

0

1

1

1

0

0

0

0

0

0

0

0

0

0

1

1

0

0

0

1

1


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

2

2

2

0

0

2

2

2

0

0

0

0

0

0

0

0

0

0

1

1

0

0

0

1

1


Площадь 0

Иначе количество двоек определяет площадь полученной фигуры.

1

1

1

0

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2

2

2

0

0

2

2

2

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0


Площадь полученной фигуры равна 6.