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

Функция cleardevice() очищает весь экран, устанавливает текущей точкой левый верхний угол экрана, но оставляет неизменными все установки графического экрана: стиль линии, текущий цвет и т.Д.

Функция clearviewport() очищает текущее окно и устанавливает текущую точку в левый верхний угол.

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

outtext() - выводит строку на экран с текущей позиции

outtextxy() - выводит строку на экран с заданной позиции

settextjustify() - устанавливает режим выравнивания текста

setusercharsize() - устанавливает шрифт, стиль и коэффициент

увеличения текста

textheight() - возвращает высоту строки в пикселях

textwith() - возвращает ширину строки в пикселях.

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

Написать программу, выводящую на экран график функции

F(x)=sin(x) + 1/sin(x) на интервале (-5,5)

Текст программы.

#include <stdio.h>

#include <graphics.h>

#include <conio.h>

#include <math.h>

#include <process.h>

float calculate_fx(float x)

{

if( sin(x) != 0)

return sin(x) + 1/(sin(x)) ;

else

return 0;

}

float calc_min(float x1, float x2,float delta_x)

{

float min = calculate_fx(x1);

for(float xx = x1;xx< x2;xx+=delta_x)

{

float current = calculate_fx(xx);

if(current < min )

min = current;

}

return min;

}

float calc_max(float x1, float x2,float delta_x)

{

float max = calculate_fx(x1);

for(float xx = x1;xx< x2;xx+=delta_x)

{

float current = calculate_fx(xx);

if(current > max )

max = current;

}

return max;

}

void main()

{

// int x1,x2,b;

// int y1,y2;

// float dx,a;

// double x_1,x_2;

// float Fmin,Fmax;

int gdriver=DETECT,gmode,error;

initgraph (&gdriver,&gmode,"e:\\borlandc\\bgi");

error=graphresult();

if (error != grOk)

{printf ("Graphics error: %s\n",grapherrormsg(error));

printf ("Press any key to halt:");

getch();

exit(1);

}

else

{

float y_scale;

float delta_x,x_min,x_max,F_min,F_max;

char out[256],out1[256],o2[256],o3[256];

//Fmax=x_2*pow(x_2,3)+2*pow(x_2,2)-0.2;

//Fmin=x_1*pow(x_1,3)+2*pow(x_1,2)-0.2;

setbkcolor(1);

setcolor(WHITE);

// line(k,b,l,b);

line(0,240,640,240);

line(320,10,320,480);

outtextxy(300,0,"y=F(x)");

x_min = -5; // minumum of x

x_max = 5; // maximum of x

// calculate delta x

delta_x = (fabs(x_max) + fabs(x_min)) / 640;

// calculate max and min F(X)

F_min = calc_min(x_min,x_max,delta_x);

F_max = calc_max(x_min,x_max,delta_x);

// calculate y scale

if ( fabs(F_max) > fabs(F_min) )

{

y_scale = F_max*2/480;

sprintf(out,"%f",fabs(F_max));

sprintf(out1,"%f",-fabs(F_max));

}

else

{

y_scale = F_min*2/480;

sprintf(out,"%f",fabs(F_min));

sprintf(out1,"%f",-fabs(F_max));

}

sprintf(o2,"%f",fabs(x_max));

sprintf(o3,"%f",-fabs(x_min));

outtextxy(340,10,out);

outtextxy(340,470,out1);

outtextxy(10,210,o2);

outtextxy(600,210,o3);

// plot f(x)

for(float st=x_min,x=0;st<x_max;st+=delta_x,x++)

{

float yy =calculate_fx(st)/y_scale;

int y;

y = - yy;

// if(y > 0 )

putpixel(x,y+240,RED);

}

getch();

closegraph;

}

}

Пояснения к программе

Данная программа вычисляет максимальное и минимальное значение функции на данном отрезке (-5,5), после чего задает соответствующий масштаб по оси oy. Графическое разрешение экрана задаем 640*480, поэтому нам необходимо вычислить ровно 480 значений функции. После вычисления программа окрашивает фон и в вычисленном масштабе по пикселю выводит значения функции на интервале. Таким образом получаем график функцииF(x)=sin(x) + 1/sin(x).