Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Labs 2004 / LABOR1 / LABOR_1.DOC
Скачиваний:
33
Добавлен:
16.04.2013
Размер:
390.66 Кб
Скачать

Пример программы построения графика в dos

Приведем код программы строящей график функции . Пусть код программы находится в файлеGraphDos.cpp

//строим график функции в DOS

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

#include <process.h>

#include <math.h>

//размеры поля вывода в мировых координатах

double xLeft, xRight, yBottom, yTop;

//размеры поля вывода в экранных координатах

int nLeft, nRight, mBottom, mTop;

//переход от xк пикселюn

inline int xn(double x){

return (x - xLeft)/(xRight - xLeft)*(nRight - nLeft) + nLeft; }

//переход от yк пикселюm

inline int ym(double y){

return (y - yBottom)/(yTop - yBottom)*(mTop - mBottom) + mBottom; }

//создаем окно вывода

void CreatWindow()

{

int winLeft = 50, winRight = 550, winBottom = 430, winTop = 100;

setfillstyle(SOLID_FILL,3);

bar(winLeft, winTop, winRight, winBottom);

setcolor(12);

outtextxy(winLeft+5, winTop+7, "Korneev V");

setcolor(15);

outtextxy(winLeft+150, winTop+7, "Graphics to DOS");

setcolor(15);

rectangle(winLeft+3, winTop+17, winRight-3, winBottom-3);

setfillstyle(SOLID_FILL,LIGHTGRAY);

bar(winLeft+5, winTop+19, winRight-5, winBottom-5);

setviewport(winLeft+5, winTop+19, winRight-5, winBottom-5,1);

}

void main()

{

//размеры поля вывода в мировых и экранных координатах

xLeft = -2; xRight = 10; yBottom = -2; yTop = 2;

nLeft = 100; nRight = 350; mBottom = 250; mTop = 50;

//создаем массивы точек для аргумента x и функции y=sin(x)

const int N = 50;

double corX[N], corY[N];

double x, y, dx = (xRight - xLeft)/(N-1);

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

{

x = xLeft + dx*i; y = sin(x);

corX[i] = x; corY[i] = y;

}

//инициализация графической системы

int mode, res, driver = DETECT;

initgraph(&driver, &mode,"c:\\borlandc\\bgi");

if((res = graphresult()) != grOk) {

printf("\nGraphics error: %s\n", grapherrormsg(res));

exit(1); }

//создаем окно вывода

CreatWindow();

//оформляем поле вывода

//выбор кисти: 1) стиль - сплошной

// 2) цвет закраски - синий

setfillstyle(SOLID_FILL,BLUE);

bar(nLeft,mBottom,nRight,mTop);

//выбор пера: 1) стиль - сплошной

// 2) толщина линий - 3 пикселя

// 3) цвет линий - желтый

setlinestyle(SOLID_LINE,0,3);

setcolor(YELLOW);

rectangle(nLeft,mBottom,nRight,mTop);

//рисуем координатные оси

//выбор пера: 1) стиль - сплошной

// 2) толщина линий - 1 пикселя

// 3) цвет линий - ярко-голубой

setlinestyle(SOLID_LINE,0,1);

setcolor(LIGHTCYAN);

int nb, ne, mb, me;

nb = xn(xLeft); mb = ym(0);

ne = xn(xRight); me = ym(0);

line(nb,mb,ne,me);

nb = xn(0); mb = ym(yBottom);

ne = xn(0); me = ym(yTop);

line(nb,mb,ne,me);

//название графика и осей

setcolor(15);

outtextxy((nLeft+nRight)/2-30, mTop+25, "Y = sin(X)");

outtextxy(nLeft-35, (mBottom+mTop)/2, "Y");

outtextxy((nLeft+nRight)/2, mBottom+25, "X");

//выводим числа вдоль осей

char ss[10];

sprintf(ss,"%6.1lf",xLeft);

outtextxy(nLeft-30,mBottom+7,ss);

sprintf(ss,"%6.1lf",xRight);

outtextxy(nRight-30,mBottom+7,ss);

sprintf(ss,"%6.1lf",yBottom);

outtextxy(nLeft-55,mBottom-7,ss);

sprintf(ss,"%6.1lf",yTop);

outtextxy(nLeft-55,mTop+3,ss);

//рисуем график по двум массивам

setcolor(12);

nb = xn(corX[0]); mb = ym(corY[0]);

moveto(nb,mb);

for( i=1; i<N; i++)

{

nb = xn(corX[i]); mb = ym(corY[i]);

lineto(nb,mb);

}

getch();

//выключение графической системы

closegraph();

}

После компиляции и компоновки получаем исполняемый файл GraphDos.exe . Запускаем программу. На Рис.4 приведен результат работы программы

Рис.4

Соседние файлы в папке LABOR1