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