Нарисовать график f(x) = sin(x)/x. — Pascal(Паскаль)

uses graph;
var mx,my,x,dx,y:real;
    grD,grM,x0,y0,i,px,py:integer;
    s:string;
begin
grD:=detect;{инициализация графического режима}
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY div 2;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=30;
my:=100;
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
{подписи оси Y}
line(x0-3,y0-round(sin(pi/2)*my),x0+3,y0-round(sin(pi/2)*my));
outtextXY(x0-10,y0-round(sin(pi/2)*my),'1');
line(x0-3,y0+round(sin(pi/2)*my),x0+3,y0+round(sin(pi/2)*my));
outtextXY(x0-15,y0+round(sin(pi/2)*my),'-1');
{подриси оси Х}
for i:=1 to 6 do   {максимальное количество засечек в одну сторону}
 begin
  line(x0+round(i*pi*mx/2),y0-3,x0+round(i*pi*mx/2),y0+3); {засечки на оси Х}
  line(x0-round(i*pi*mx/2),y0-3,x0-round(i*pi*mx/2),y0+3);
  if i mod 2=0 then {подписи через 1}
   begin
    str(i div 2,s);
    if s='1' then s:='';{1pi 1 не пишем}
    outtextXY(x0+round(i*pi*mx/2),y0+10,s+'pi');
    outtextXY(x0-round(i*pi*mx/2),y0+10,'-'+s+'pi');
   end;
  end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=-3*pi;
while x<=3*pi do
 begin
  px:=x0+round(x*mx); {изменение по оси Х}
  y:=sin(x)/x; {график в реальных координатах,
                при х=0 y=1 - первый замечательный предел}
  py:=y0-round(y*my);{в экранных}
  putpixel(px,py,12);{график красным}
  x:=x+dx; {наращиваем х}
 end;
readln
end.

Leave a Comment

− 6 = 2