Напишите процедуру рисования графика функции в соответствии с вариантом, указанным в таблице. Предусмотреть вывод оцифрованных координатных осей соответственно области построения, подписей к графику. Рационально расположить элементы рисунка (график, оси, цифры и штрихи масштабирования, подписи) на экране. у=arccos (x) — Pascal(Паскаль)

uses crt, graph;

function F(x: real): real;
begin
  F := arctan(sqrt(1 - x * x) / x);
end;

const
  x1 = -1; { начало и конец графика в реальных значениях }
  x2 = 1;
  dx = 0.001; { шаг построения графика }

var
  e, x, m, a, y: real;
  x0, y0, grD, px, py, grM, i, k: integer;
  s, s1: string;

begin
  grD := detect;
  initgraph(grD, grM, '');
  x0 := getmaxX div 2; { начало координат по центру }
  y0 := getmaxY - 40; { и внизу }
  m := (y0 - 40) / pi;
  { масштаб = высота области графика/макс. значение функции }
  SetBkColor(7); { цвет фона }
  SetColor(1); { цвет линий осей }
  line(0, y0, getmaxX, y0); { ось Х }
  line(x0, getmaxY, x0, 0); { ось У }
  setlinestyle(1, 0, 0); { пунктирная линия }
  SetColor(9); { цвет сетки }
  for i := 1 to round(pi * m)
    do { максимальное количество засечек в одну сторону }
  begin
    line(10, y0 - round(i * m), 630, y0 - round(i * m));
    line(x0 + round(i * m), 0, x0 + round(i * m), getmaxY); { засечки на оси Х }
    line(x0 - round(i * m), 0, x0 - round(i * m), getmaxY);
    str(i, s);
    { подпись оси У }
    outtextXY(x0 - 10, y0 - round(i * m), s); { соответственно засечкам }
    { подпись оси Х }
    outtextXY(x0 + round(i * m), y0 + 10, s);
    outtextXY(x0 - round(i * m), y0 + 10, '-' + s);
  end;
  { центр }
  outtextXY(x0 + 5, y0 + 10, '0');
  { подписи концов осей }
  outtextXY(getmaxX - 10, y0 - 10, 'X');
  outtextXY(x0 + 10, 10, 'Y');
  setlinestyle(0, 0, 1);
  { подписи и засечки по оси У-дополнительные }
  line(x0 - 3, y0 - round(pi * m / 2), x0 + 3, y0 - round(pi * m / 2));
  outtextXY(x0 + 10, y0 - round(pi * m / 2), 'pi/2');
  line(x0 - 3, y0 - round(pi * m), x0 + 3, y0 - round(pi * m));
  outtextXY(x0 + 10, y0 - round(pi * m), 'pi');
  { график }
  x := x1;
  while x <= x2 do
  begin
    px := x0 + round(x * m); { изменение по оси Х }
    if x = 0 then
      y := pi / 2
    else if x < 0 then
      y := pi + F(x)
    else
      y := F(x); { график в реальных координатах }
    py := y0 - round(y * m); { в экранных }
    putpixel(px, py, 10);
    x := x + dx; { наращиваем х }
  end;
  SetColor(10);
  setlinestyle(0, 0, 1);
  outtextXY(x0 + 80, 80, 'Grafik functii Y=arccos(x)');
  readln

end.

Leave a Comment

27 + = 34