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

Лабораторная работа №6 Вариант 17

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

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

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

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

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

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

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

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

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

на тему:

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

Студент

Понарьин С.Н.

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

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

Группа

АС-09

Принял

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

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

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

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

Липецк 2010

  1. 1. Задание:

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

Графический примитив

17 – отрезок

  1. 2. Блок-схема программы

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

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

#include <locale.h>

int i,j;

void Draw(int x0, int y0, int x1, int y1)

{

int X,Y,Px,Py,*E;

X=x0;//Координаты 1-ой точки

Y=y0;

Px=x1-x0;//Разность координат

Py=y1-y0;

char **g_mas=(char **)malloc(sizeof(char*)*(y1+1));

for(i=0;i<(y1+1);i++)

g_mas[i]=(char *)malloc(sizeof(char)*(x1+1));

for(i=0;i<(y1+1);i++)

for(j=0;j<(x1+1);j++)

g_mas[i][j]='.';

g_mas[y1][0]='0';

g_mas[y1-Y][X]='*';

if(Px>=Py)

{

E=(int*)(malloc(sizeof(int)*(Px+1)));//

E[0]=2*Py-Px;//

for(i=0;i<Px;i++)//

{

if(E[i]>0)//Если отклонение > 0

{

X++;

Y++;

E[i+1]=E[i]+2*(Py-Px);

}

else

{

X++;//

E[i+1]=E[i]+2*Py;//

}

g_mas[y1-Y][X]='*';

}

}

else

{

E=(int*)(malloc(sizeof(int)*(Py+1)));//

E[0]=2*Px-Py;//

for(i=0;i<Py;i++)//

{

if(E[i]>0)//Если отклонение > 0

{

X++;

Y++;

E[i+1]=E[i]+2*(Px-Py);

}

else

{

Y++;//

E[i+1]=E[i]+2*Px;//

}

g_mas[y1-Y][X]='*';

}

}

printf("\nГрафик:\n\n");

for(i=0;i<(y1+1);i++)

{

for(j=0;j<(x1+1);j++)

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

printf("\n");

}

for(i=0;i<(y1+1);i++)

free(g_mas[i]);

free (g_mas);

free(E);

}

void Menu()

{

int x0, y0, x1, y1;

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

scanf("%d %d", &x0, &y0);

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

scanf("%d %d", &x1, &y1);

if(x1<x0||y1<y0||x0<0||y0<0||x1<0||y1<0)

{

printf("\nНельзя построить график!\n");

Menu();

}

else

Draw(x0,y0,x1,y1);

}

void main()

{

setlocale(LC_ALL, "Rus");

Menu();

printf("\n");

system("pause");

}

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