Вывод графика - PascalABC.NET
Формулировка задачи:
Помогите сделать вывод графика, пожаалуйстаа!
Решение задачи: «Вывод графика»
textual
Листинг программы
uses graphABC; function F(x:real):real; begin if x<=-6 then F:=-sqrt(9-sqr(x+6)) else if x<=-3 then F:=x+3 else if x<=0 then F:=sqrt(9-x*x) else if x<=3 then F:=-x+3 else F:=0.5*x-1.5; end; var x,max,min,mx,my,dx:real; x0,y0,xn,xk,i:integer; begin setwindowsize(800,320); centerwindow; xn:=-9; xk:=9;//интервал по Х x0:=windowwidth div 2; mx:=(x0-40)/xk;//масштаб по Х y0:=windowheight div 2; my:=(y0-40)/3; line(0,y0,windowwidth-10,y0);///оси line(windowwidth,y0,windowwidth-10,y0-5); line(windowwidth,y0,windowwidth-10,y0+5); line(windowwidth-10,y0-5,windowwidth-10,y0+5); floodfill(windowwidth-8,y0,clBlack); setfontsize(10); textout(windowwidth-10,y0-20,'X'); line(x0,10,x0,windowheight); line(x0,0,x0-5,10); line(x0,0,x0+5,10); line(x0-5,10,x0+5,10); floodfill(x0,8,clBlack); textout(x0+10,0,'Y'); for i:=1 to 9 do//максимальное количество засечек в одну сторону begin if i<4 then begin line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));//засечки на оси У line(x0-3,y0+round(i*my),x0+3,y0+round(i*my)); textout(x0-20,y0-round(i*my),inttostr(i));//подпись оси У соответственно засечкам textout(x0-20,y0+round(i*my),inttostr(-i)); end; line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); //засечки на оси Х textout(x0+round(i*mx),y0+10,inttostr(i));//подпись оси Х line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3); textout(x0-round(i*mx),y0+10,inttostr(-i)); end; //центр textout(x0+5,y0+10,'0'); //график setpenwidth(2); x:=xn; while x<=xk do begin if x=xn then moveto(x0+round(x*mx),y0-round(F(x)*my)) else lineto(x0+round(x*mx),y0-round(F(x)*my)); x:=x+0.01; end; end.
Объяснение кода листинга программы
- Объявлены переменные: x, max, min, mx, my, dx, x0, y0, xn, xk, i.
- Заданы размеры окна и его расположение.
- Заданы координаты для осей X и Y.
- Выведены линии и подписи для оси X.
- Выведены линии и подписи для оси Y.
- Выведены линии и подписи для всех засечек на оси X.
- Выведены линии и подписи для всех засечек на оси Y.
- Выведена точка (0,0) в центре графика.
- Установлен размер и стиль пера.
- Переменная x инициализируется значением xn.
- В цикле while рисуется график функции F(x).
- Координаты каждой точки графика вычисляются с помощью функции F(x).
- При достижении xk, цикл завершается.
- Функция F(x) определена в начале кода.
- Значение функции F(x) вычисляется в зависимости от диапазона значений x.
- Функция F(x) принимает значение -sqrt(9-sqr(x+6)) при x<=-6, x+3 при x<=-3, sqrt(9-xx) при x<=0 и -x+3 при x<=3, и 0.5x-1.5 в противном случае.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д