Program Grafik;
uses GraphABC;
var x,y,i,a,b,w,g,x1,y1: integer;
r,n,m,f,nt,mt,d,n1,m1,n2,m2:real;
s,s1:string;
begin
SetWindowSize (1000,500);
SetFontColor(clblack);
s:='-9-8-7-6-5-4-3-2-1   1 2 3 4 5 6 7 8 9'; {Обозначаю отметки на оси x}
for i:=0 to 19 do begin
s1:=copy(s,1+2*i,2);
w:=50*i+45;
Textout(w,260,s1);
end;
delete(s,1,2);
s:='4 3 2 1   -1-2-3-4';
for i:=0 to 9 do begin{Обозначаю отметки на оси y}
s1:=copy(s,1+2*i,2);
w:=50*i+43;
Textout(507,w,s1);
end;
delete(s,1,2);
Textout(507,260,'0'); {Обозначаю начало координат и оси отдельно, чтобы не повредить целостность осей}
Textout(990,220,'X');
Textout(515,3,'Y');
line (500,0,500,500);   {Строю оси}
line (0,250,1000,250);
line (500,0,510,10);
line (500,0,490,10);
line (1000,250,990,240);
line (1000,250,990,260);
a:=0;
for i:=1 to 20 do begin   {Строю отметки на осях}
a:=a+50;
line (a,248,a,253);
b:=b+50;
line (498,b,503,b);
end;

for x:=-200 to 200 do  {Строю график функции x=y}
begin
y:=x;
SetPixel(x+500,250-y,RGB (0,0,0));
end;
f:=0;
r:=100;
nt:=500;
mt:=250;
d:=100;
for i:=1 to 1256 do begin       {Строю окружновть}
f:=f+pi/d;
n:=nt+sin(f/5)*r;
m:=mt+cos(f/5)*r;
x1 := Round(n);
y1 := Round(m);
setpixel(x1,y1,RGB (0,0,0));
end;
for i:=0 to 25  do begin       {Закрвшиваю}
 g:=i*19;
 f:=g*pi/d;
n:=nt+sin(f/5)*r;
 m:=mt+cos(f/5)*r;
 g:=i*19;
 f:=g*-pi/d;
n1:=nt+sin(f/5)*r;
 m1:=mt+cos(f/5)*r;
 n2:=500+x;
m2:=250-y;
if (n1>n2)and (m1<m2) then
begin n1:=n2 ;
m1:=m2;
end;

 Line(Round(n),Round(m),Round(n1),Round(m1));
end;

end.