}
for (int i = 0; i < 64; i++ ) {
setrgbpalette ( i, i, i, 0 );
setfillstyle ( SOLID_FILL, i);
bar (i*10, 0, 9 + i*10, getmaxy ());
}
getch (); closegraph ();
}
Последним параметром для функции installuserdriver является функция, определяющая наличие соответствующей карты и возвращающей рекомендуемый режим.
Существует еще один способ подключения нестандартного драйвера устройства, когда вместо адреса проверяющей функции передается NULL, а возвращенное функцией installuserdriver значение используется в качестве первого параметра для функции initgraph; вторым параметром является рекомендуемый номер режима (он зависит от используемого драйвера).
21 // File example6.cpp int driver; int mode; int res;
if (( driver = installuserdriver ("VESA", NULL )) == grError)
{ .
printf ("\nCannot load extended driver"); exit (1 );
}
initgraph ( &driver, &mode,"");
3.11. Построение графика функции Ниже приводится программа, осуществляющая построение графика функции одной переменной при заданных границах изменения аргумента. Программа автоматически подбирает шаги разбиения осей (целые степени 10) и расставляет необходимые метки. Построение графика осуществляется на всем экране, но программу несложно переделать для построения графика и в заданной прямоугольной области.
// File example6.cpp
void plotGraphic (float a, float b, float (*f)( float)) {
float xStep = pow (10, floor (log (b - a) / log (10.0))); float xMin = xStep * floor ( a / xStep ); float xMax = xStep * ceil ( b / xStep );
о
.OL
3. Графические примитивы
float *fVal = new float [ 100];
for (int i = 0; i < 100; i++ )
fVal [i] = f(a + i*(b-a) /100.0 );
float yMin = fVal [0], yMax = fVal [0];
for (i = 1; i < 100; i++ )
if (fVal [i] < yMin )
yMin = fVal [i];
else
if (fVal [i] > yMax )
yMax = fVal [i];
float yStep = pow (10,floor(log(yMax-yMin) / log(10.0)));
yMin = yStep * floor ( yMin / yStep ); yMax = yStep * ceil ( yMax / yStep );
int xO = 60;
int x1 = getmaxx () - 20;
int yO = 10;