uses crt,graph;
var gd,gm,x0,y0,i,xi,yi:integer;
xn,xk,mx,my,x,y:real;
s:string;
begin
gd:=0;
initgraph(gd,gm,'');
x0:=getmaxX div 2;
y0:=getmaxY-40;
outtextXY(20,20,'Grafik functii y=ln(x+5)');
outtextXY(40,30,'na intervale [-6,6]');
{интервал графика}
xn:=-6;
xk:=6;
{масштабы по осям}
mx:=(x0*2-40)/(xk-xn);
my:=(y0-20)/(round(ln(xk+5))+1);
{ось Х}
line(0,y0,getmaxX,y0);
outtextXY(x0+5,y0+10,'0');
outtextXY(x0+round(xk*mx)+5,y0-15,'X');
for i:=1 to round(xk) do
begin
str(i,s);
line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3);
outtextXY(x0+round(i*mx)+5,y0+10,s);
line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3);
outtextXY(x0-round(i*mx)-5,y0+10,'-'+s);
end;
{Ось У}
line(x0,y0,x0,10);
outtextXY(x0-10,10,'Y');
for i:=1 to round(ln(xk+5))+1 do
begin
str(i,s);
line(x0+3,y0-round(i*my),x0-3,y0-round(i*my));
outtextXY(x0-15,y0-round(i*my),s);
end;
{график}
x:=xn;
while x<=xk do
begin
xi:=x0+round(x*mx);
if x>-4 then
begin
y:=ln(x+5);
yi:=y0-round(y*my);
putpixel(xi,yi,12);
sound(300);
delay(100);
nosound;
end;
x:=x+0.1;
end;
readln
end.