Построить график функции - Turbo Pascal (29064)
Формулировка задачи:
помогите пожалуйста сделать график функции у=(корень х)+х2( х в квадрате)
Решение задачи: «Построить график функции»
textual
Листинг программы
uses Graph; type tFunc= function(x: double): double; var gd,gm,i,j: integer; i1,i2,j1,j2: integer; x1,x2,y1,y2: double; function WinX(x: double): integer; begin WinX:= Round((x-x1)/(x2-x1)*(i2-i1)) + i1 end; function WinY(y: double): integer; begin WinY:= j2-Round((y-y1)/(y2-y1)*(j2-j1)) end; procedure WinSet(u1,v1,u2,v2: double; a1,b1,a2,b2: integer); begin if a1<0 then i1:= GetMaxX+a1 else i1:= a1; if b1<0 then j1:= GetMaxY+b1 else j1:= b1; if a2<0 then i2:= GetMaxX+a2 else i2:= a2; if b2<0 then j2:= GetMaxY+b2 else j2:= b2; x1:= u1; y1:= v1; if u2<=u1 then x2:= x1+(v2-v1)/(j2-j1)*(i2-i1) else x2:= u2; if v2<=v1 then y2:= y1+(u2-u1)/(i2-i1)*(j2-j1) else y2:= v2 end; procedure WinFrame(col: integer); begin SetColor(col); Rectangle(i1,j1,i2,j2) end; procedure WinAxisX(y,d: double; col,mark: word); var x: double; s: string; begin SetColor(col); SetLineStyle(SolidLn,0,3); Line(i1,WinY(y),i2,WinY(y)); x:= Trunc(x1/d)*d; if x1>0 then x:=x+d; SetLineStyle(SolidLn,0,1); while x<x2 do begin x:=x+d; if abs(x)>1e-16 then begin Line(WinX(x),WinY(y)+mark,WinX(x),WinY(y)-mark); Str(x:0:1,s); OutTextXY(WinX(x)-TextWidth(s) div 2,WinY(y)+mark*2,s) end end; end; procedure WinAxisY(x,d: double; col,mark: word); var y: double; s: string; begin SetColor(col); SetLineStyle(SolidLn,0,3); Line(WinX(x),j1,WinX(x),j2); y:= Trunc(y1/d)*d; if y1>0 then y:=y+d; SetLineStyle(SolidLn,0,1); while y<y2 do begin y:=y+d; if abs(y)>1e-16 then begin Line(WinX(x)+mark,WinY(y),WinX(x)-mark,WinY(y)); Str(y:0:1,s); OutTextXY(WinX(x)-TextWidth(s)-mark*2,WinY(y)-TextHeight(s) div 2,s) end end; end; procedure WinPlot(f: tFunc; x1,x2,d: double); var x: double; begin MoveTo(WinX(x1),WinY(f(x1))); x:= x1; while x<x2 do begin LineTo(WinX(x),WinY(f(x))); x:= x+d end; MoveTo(WinX(x2),WinY(f(x2))) end; { тут реализуете свою функцию } function MyFunc(x: double): double; begin MyFunc:= Sqrt(x) + Sqr(x) end; begin gd:= Detect; InitGraph(gd,gm,''); WinSet(-1,-1,10,-1,20,20,GetMaxX div 2,-20); WinFrame(DarkGray); WinAxisX(0,1,LightGray,5); WinAxisY(0,1,LightGray,5); SetLineStyle(SolidLn,0,Yellow); WinPlot(@MyFunc,0,x2,0.01); readln; CloseGraph end.
Объяснение кода листинга программы
В данном коде используется библиотека Graph, которая позволяет создавать графики функций. Переменные и функции объявлены следующим образом:
- gd, gm, i, j: integer;
- i1, i2, j1, j2: integer;
- x1, x2, y1, y2: double;
- tFunc - тип функции, которая будет строиться;
- MyFunc - функция, которую мы будем использовать для построения графика;
- WinX, WinY, WinSet, WinFrame, WinAxisX, WinAxisY, WinPlot - процедуры, которые отвечают за построение осей и графика функции. В функции WinSet устанавливаются начальные значения координат для осей x и y. Затем в функциях WinAxisX и WinAxisY строятся оси x и y соответственно. В функции WinPlot строится график функции. Функция MyFunc используется для вычисления значения функции в точке x. В конце программы закрывается графический редактор.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д