Консольная Графика - построение графиков функций - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д