- •Министерство образования и науки рф
- •Задания обычной сложности
- •Варианты усложнённых заданий
- •Варианты упрощённых заданий
- •Оглавление
- •Условие задачи
- •Способ решения
- •Принцип реализации. Описание констант, переменных, типов.
- •Общая структура программы.
- •Используемые процедуры и функции.
- •Модуль View
- •Головная программа
- •Текст программы
- •394000, Воронеж, пр. Революции, 19
Принцип реализации. Описание констант, переменных, типов.
Для хранения вводимых координат создан стек на базе линейного односвязного динамического списках [1,2], каждый элемент которого содержит четыре координаты прямоугольника, и указатель (поле adr) на следующий элемент (см. рис.1).
П
ризнак
конца стека – константаnill
в поле адреса. Указатель на вершину
стека хранится в переменной na.
type p=^е1;
el =record
xl,x2,y2,yl:integer;
adr:p;
end;
var na : p;
Где element^.xl, element^.yl, element^.x2, element^.y2 хранят координаты прямоугольника, element^. adr содержит указатель на следующий прямоугольник. Массив, имитирующий экран монитора имеет размерность 64*48, а не 640*480, таким образом точность равна 10 пикселей.
Const kstr=64;
stb=48;
var m:array[0..kstr,0..kstb]of integer;
Для работы с массивом созданы вспомогательные переменные
var i, j , n, k: integer;
n - задает число прямоугольников.
Общая структура программы.
Блок схема работы программы приведена на рис.2.
Программа содержит 3 модуля. Один (stack) содержит процедуры, обслуживающие очередь, в какую заносятся координаты прямоугольников. А именно: считывание исходных данных из файла, занесение координат прямоугольника в очередь, извлечение их из очереди.
Второй модуль (view) содержит процедуру, которая запрашивает имя файла с исходными данными и считывает их. В нём также содержится процедура, которая помечает единицами элементы матрицы M, попадающие внутрь прямоугольника.
В головной программе проводится поиск любого элемента, равного «1» , что означает его принадлежность к какому-либо прямоугольнику, содержит рекурсивную процедуру, которая заменяет все смежные «1» на «2» и осуществляет другие вспомогательные действия.
Используемые процедуры и функции.
Модуль Stack
Для формирования списка созданы процедуры add и pop. Для добавления и извлечения элементов списков соответственно.
М
одуль
(graphic)
содержит процедуры работы с графикой.
Процедура добавления элемента в стек (add)
С
читанные
из файлакоординаты
прямоугольника передаются в процедуру
add
как формальные параметры
x1,
x2,
y1,
y2.
Блок- схема программы приведена на
рис.3, а схема её работы – на рис.4.
PROСEDURE add(X1,Y1,X2,Y2: integer) ;
{Процедура добавления элемента в список}
Var now: p;
new (now);
now^.x1:=x1;
now^.y1:=y1;
begin
now^.x2:=x2;
now^.y2:=y2;
now^.adr:=na; {установление связи I}
na:=now; {установление связи II}
end;

Процедура извлечения элемента из стека (pop)
{Описывается аналогично предыдущей процедуре.}
Модуль Graphic
Модуль содержит 2 процедуры – процедуру подключения графического режима otkr и процедуру proris, осуществляющую вывод прямоугольника на экран. Координаты прямоугольника передаются в качестве формальных параметров.
Для вывода на экран прямоугольников была создана новая прямоугольная система координат с центром в точке (0,480), см. рис.5.
Константы b=480, kx=10 позволяют в новой системе координат увеличить изображение прямоугольников относительно стандартной системы координат 640*480 в 10 раз (maxX=64, maxY=48).
Используются стандартные процедуры модуля Graph:
setbkcolor (Blue)- задает цвет фона(синий).
setcolor(Red)- задает цвет линий (сторон прямоуголников),
setlinestyle(0,0,3)- определяет толщину линий,
rectangle(xl*kx, 480-yl*kx, x2*kx, 480- y2*kx)- процедура построения прямоугольника.

