Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №6 (Вариант 12)

.doc
Скачиваний:
7
Добавлен:
20.06.2014
Размер:
81.41 Кб
Скачать

2

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №6

по дисциплине

«Технология программирования»

на тему:

«Построение графических примитивов»

Студент

Ключанских А.С

подпись, дата

фамилия, инициалы

Группа

АС-10

Принял

Домашнев П.А.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2011

  1. Задание кафедры

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

Вариант 12: заполнение области.

  1. Пошаговое описание алгоритма программы.

  1. В памяти создается пустая (заполненная пробелами) область размерами 25х80.

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

  3. На интервале от точки А до точки В по оси y и по оси x рисуются отрезки символами # (создается прямоугольник).

  4. Если начальная точка не является символом границы (#), и если она еще не закрашена (*), то присвоить соответствующей точке области символ *.

  5. Рекурсивный вызов функции закраски для точек, лежащих вокруг заданной.

  6. Вывод на экран получившейся закрашенной области.

  1. Листинг программы

#include <stdio.h>

#include <locale.h>

char Oblast[25][80];int A[2],B[2];

void zapolnenie(int,int); void print(void);

void main(void)

{

setlocale(LC_ALL,"Russian");

int Start_X, Start_Y;

for(int i=0;i<25;i++)

for(int j=0;j<80;j++)

Oblast[i][j]=' ';

printf("Введите координаты точки А: ");

scanf("%d%d",&A[0],&A[1]);

printf("Введите координаты точки В: ");

scanf("%d%d",&B[0],&B[1]);

printf("Введите координаты начального пикселя: ");

scanf("%d%d",&Start_X,&Start_Y);

for(int i=A[0]; i<=B[0]; i++) Oblast[A[1]][i]='#';

for(int i=A[0]; i<=B[0]; i++) Oblast[B[1]][i]='#';

for(int i=A[1]; i<=B[1]; i++) Oblast[i][A[0]]='#';

for(int i=A[1]; i<=B[1]; i++) Oblast[i][B[0]]='#';

zapolnenie(Start_X,Start_Y);

print();

}

void zapolnenie(int x,int y)

{

if(Oblast[y][x]!='#'&&Oblast[y][x]!='*')

{

Oblast[y][x]='*';

zapolnenie (x+1,y);

zapolnenie (x,y+1);

zapolnenie (x-1,y);

zapolnenie (x,y-1);

}

}

void print(void)

{

for(int i=0;i<25;i++)

for(int j=0;j<80;j++)

printf("%c",Oblast[i][j]);

}

  1. Контрольный пример