Напишите программу изображения графика по данным, хранящимся в массиве из 15 целых чисел введённых с клавиатуры — Pascal(Паскаль)

uses crt,graph;
const n=15;
var a:array[1..n] of integer;
    i,gd,gm,xc,yc,max,min:integer;
    mx,my:real;
    s:string;
begin
clrscr;
writeln('Vvedite ',n,' celyh chisel:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
gd:=0;
initgraph(gd,gm,'');
min:=a[1];max:=a[1];{найдеи мин и макс для графика}
for i:=1 to n do
 begin
  if a[i]>max then max:=a[i];
  if a[i]<min then min:=a[i];
 end;
if min>=0 then{если график выше оси Х}
 begin
  yc:=getmaxY-40;{положение оси Х}
  my:=(yc-40)/max;{масштаб по оси У}
 end
else if max<=0 then{если ниже}
 begin
  yc:=40;
  my:=(getmaxY-70)/abs(min);
 end
else if max*min<0 then{если и выше и ниже}
 begin
  yc:=round((getmaxY)*max/(max+abs(min)));
  my:=(getmaxY-70)/(max+abs(min));
 end;
xc:=30;{положение оси У}
mx:=(getmaxX-60)/n;{масштаб по оси Х}
{оси}
line(xc,yc,getmaxX-20,yc);
outtextXY(getmaxX-20,yc-15,'X');
line(xc,20,xc,getmaxy-20);
outtextXY(xc-10,20,'Y');
{засечки подписи по оси Х}
for i:=1 to n do
 begin
  line(xc+round((i-1)*mx),yc-2,xc+round((i-1)*mx),yc+2);
  str(i,s);
  outtextXY(xc+round((i-1)*mx)+3,yc+10,s);
 end;
{график}
moveto(xc,yc-round(a[1]*my));
setcolor(10);
for i:=1 to n do
lineto(xc+round((i-1)*mx),yc-round(a[i]*my));
setcolor(12);
for i:=1 to n do
 begin
  circle(xc+round((i-1)*mx),yc-round(a[i]*my),2);{точки на графике}
  str(a[i],s);{преобразуем значения в массиве в строку}
  if a[i]>0 then outtextXY(xc+round((i-1)*mx)-5,yc-round(a[i]*my)-15,s){подписи выше оси}
  else outtextXY(xc+round((i-1)*mx)-5,yc-round(a[i]*my)+10,s){ниже оси}
 end;
readln
end.

Leave a Comment

23 + = 30