Построить точечный график функции у=х*х*х+3*х+5 в диапазоне изменения х от -2 до 2 с числом точек графика равным 30 — Pascal(Паскаль)

uses crt,graph;
const n=30;
function F(x:real):real;
begin
F:=x*x*x+3*x+5;
end;
var xn,xk,x,dx,y,ymn,ymx,mx,my:real;
    x1,y1:array[1..n] of real;
    m,i,gd,gm,x0,y0:integer;
    st:string;
begin
clrscr;
xn:=-2;
xk:=2;
dx:=(xk-xn)/n;
ymn:=F(xn);
ymx:=ymn;
for i:=1 to n do
 begin
  x:=xn+(i-1)*dx;
  y:=F(x);
  x1[i]:=x;
  y1[i]:=y;
  if y<ymn then ymn:=y;
  if y>ymx then ymx:=y;
  x:=x+dx;
 end;
writeln('Znachenia argumenta X:');
for i:=1 to n do
write(x1[i]:0:2,' ');
writeln;
writeln('Znachenia functii Y:');
for i:=1 to n do
write(y1[i]:0:2,' ');
writeln;
writeln('Minimalnoe znachenye functii=',ymn:0:2);
writeln('Maximalnoe znachenye functii=',ymx:0:2);
write('Press Enter...');
readln;
gd:=0;
initgraph(gd,gm,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
mx:=(getmaxX-20)/(xk-xn);
if ymx>abs(ymn) then my:=(y0-20)/ymx
else my:=(y0-20)/abs(ymn);
line(0,y0,getmaxX,y0);
outtextXY(10,y0-15,'-2');
outtextXY(getmaxX-10,y0-15,'2');
outtextXY(X0+5,y0-15,'0');
for i:=0 to n do
 begin
  line(round(i*(getmaxX-10)/n)+10,y0+3,round(i*(getmaxX-10)/n)+10,y0-3);
  str(i+1,st);
  outtextXY(round(i*(getmaxX-10)/n)+10,y0+10,st);
 end;
line(x0,getmaxY-20,x0,20);
outtextXY(x0-15,10,'Y');
line(x0-3,y0-round(ymx*my),x0+3,y0-round(ymx*my));
str(ymx:0:2,st);
outtextXY(x0+5,y0-round(ymx*my),st);
line(x0-3,y0-round(ymn*my),x0+3,y0-round(ymn*my));
str(ymn:0:2,st);
outtextXY(x0+5,y0-round(ymn*my),st);
moveto(10,y0-round(y1[1]*my));
setcolor(10);
circle(10,y0-round(y1[1]*my),2);
for i:=1 to n do
 begin
  setcolor(12);
  lineto(x0+round(x1[i]*mx),y0-round(y1[i]*my));
  setcolor(10);
  circle(x0+round(x1[i]*mx),y0-round(y1[i]*my),2);
 end;
readln
end.

Leave a Comment

21 − 16 =