С для профессиональных программистов




Программа вычерчивания диаграмм. - часть 6


int offset;                                            /* расстояние между диаграммами */

int min,max;  /* минимальное и максимальное выводимые значения */

int width;                                            /* толщина линий */

int y,t,incr;

double norm_data,norm_ratio,spread;

char s[80];

static int color = 0;

int tempwidth;

/* всегда используйте различные цвета */

color++;

if ( color > 3 ) color = 1;

/* определение нормирующего множителя */

spread = (double)max-min;

norm_ratio = 180/spread;

incr = 280/num; /* определение промежутка между значениями*/

tempwidth = width;

for (t=0;t<num;++t)

norm_data = data[t];

/* подгонка отрицательных значений */

norm_data = norm_data-(double)min;

norm_data *= norm_ratio; /* нормирование */

y = (int)norm_data; /* преобразование типа */

do

Line(179,((t*incr)+20+offset+width),179-y,

((t*incr)+20+offset+width),color);

width--;

 while(width);

width = tempwidth;

/* поиск наименьшего минимума и наибольшего максимума

среди всех наборов данных */

void min_max(v,entries,sets,min,max)

double v[][MAX_ENTRIES]; /*  значения */

int entries; /* количество входов для каждого набора

данных */

int sets; /* количество наборов данных */

int *min,*max; /* возвращает минимальное и максимальное

значение */

int i,j;

int tmin,tmax;

*min = *max = 0;

for (i=0;i<sets;i++)

tmax = getmax(v[i],entries);

tmin = getmin(v[i],entries);

if (tmax>*max) *max = tmax;

if (tmin <*min) *min = tmin;

/* Возврат максимального значения данных */

getmax(data,num)

double *data;

int num;

int t,max;

max = (int)data[0];

for (t=1;t<num;++t)

if (data[t]>max) max = (int)data[t];

return max;

/* Возврат минимального значения данных */

getmin(data,num)

double *data;

int num;

int t,min;

min = (int)data[0];

for (t=1;t<num;++t)

if (data[t]<min) min = (int)data[t];

return min;

/* Вывод линии заданного цвета, используя базовый алгоритм




Содержание  Назад  Вперед