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

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

Для хранения вводимых координат создан стек на базе линейного односвязного динамического списках [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)- процедура построения прямоугольника.