Консольная Графика - построение графиков функций - C (СИ)
Формулировка задачи:
Нужно построить в консоле 2 графика функции, друг под другом. Проблема в том что не знаю вобще модуля graphics. Кто может скиньте литературу по графике в С или примеры программ построения графиков функции.
Решение задачи: «Консольная Графика - построение графиков функций»
textual
Листинг программы
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
void drawAxes(void) //чертим оси
{
int xmax,ymax,i;
char c[3];
setcolor(15); //цвет - белый
xmax = getmaxx();
ymax = getmaxy();
line(xmax/2-200,ymax/2,xmax/2+200,ymax/2);
line(xmax/2,ymax/2-200,xmax/2,ymax/2+200);
for(i=-9;i<10;i++)
{ line(xmax/2+i*20,ymax/2,xmax/2+i*20,ymax/2-5);
line(xmax/2,ymax/2+i*20,xmax/2+5,ymax/2+i*20);
}
setcolor(12); //засечки и цифры - красные
for(i=-9;i<10;i++)
{ itoa(i,c,10);
outtextxy(xmax/2+i*20-5,ymax/2+5,c);
if (i) outtextxy(xmax/2-15,ymax/2-i*20,c);
}
}
void drawFunction(void) //чертим функцию
{
int xmax,ymax,i,j,i0,j0;
double x,y;
setcolor(11); //цвет - бирюзовый
xmax = getmaxx();
ymax = getmaxy();
x=-200/20.0;
y=x/(x*x-2*x+1);
j=-y*20+ymax/2; //y(x) для начальной точки
i0=xmax/2-200;j0=j;
for(i=xmax/2-200;i<xmax/2+200;i++)
{ x=(i-xmax/2)/20.0;
if(x<0.96 || x>1.04) //обходим особую точку Х =1
{ y=x/(x*x-2*x+1); //y(x) в цикле
j=-y*20+ymax/2;
line(i0,j0,i,j);
i0=i;j0=j;
}
}
}
int main()
{
int graphdriver=DETECT, graphmode,errorcode;
initgraph(&graphdriver,&graphmode,"");
errorcode = graphresult();
if(errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); //возврат с кодом ошибки
}
drawAxes(); //вызов процедуры черчения осей
drawFunction(); // вызов процедуры черчения графика
getch(); //задержка консоли
closegraph(); //конец работы в графическом режиме
return 0;
}