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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5