uses graph;
function F(x:real):real;
begin
F:=x*x+2*x-cos(x);
end;
var a,b,mx,my:real;
x:real;
x0,y0,i:integer;
s:string;
begin
initgraph(x0,y0,'');
a:=-1;
b:=1;{интервал по Х}
x0:=getmaxX div 2;
mx:=(x0-30);{масштаб по Х}
y0:=getmaxY div 2;
my:=(y0-40)/F(b);
line(0,y0,getmaxX,y0);{оси}
line(x0,0,X0,getmaxY);
for i:=1 to 10*(trunc(F(b))+1) do{максимальное количество засечек в одну сторону}
begin
line(x0-3,y0-round(i*my/10),x0+3,y0-round(i*my/10));{засечки на оси У}
line(x0-3,y0+round(i*my/10),x0+3,y0+round(i*my/10));
line(x0+round(i*mx/10),y0-3,x0+round(i*mx/10),y0+3); {засечки на оси Х}
line(x0-round(i*mx/10),y0-3,x0-round(i*mx/10),y0+3);
{подпись оси У}
str(i/10:0:1,s);
if i mod 2=0 then
begin
outtextXY(x0-30,y0-round(i*my/10),s);{соответственно засечкам}
outtextXY(x0-35,y0+round(i*my/10),'-'+s);
{подпись оси Х}
outtextXY(x0+round(i*mx/10),y0+10,s);
outtextXY(x0-round(i*mx/10),y0+10,'-'+s);
end
end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+5,10, 'Y');
{график}
x:=a;
while x
begin
putpixel(x0+round(x*mx),y0-round(F(x)*my),12);
x:=x+0.001;
end;
{название}
setcolor(12);
outtextXY(100,10,'y=x^3');
outtextXY(100,30,'int.[-10;10]');
readln
end.
Исходник на турбо, перевести могу, краткие моменты.