Создайте программу, выводящую ** экран график функции f(x)=1/x ** паскале пожалуйста!!

0 голосов
46 просмотров

Создайте программу, выводящую на экран график функции f(x)=1/x
на паскале пожалуйста!!


Информатика (24 баллов) | 46 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
Внимание! Если программа не работает, обновите версию!

Если надо быстро, можно так:

uses GraphABC;

begin
  Draw(x->1/x) 
end.
(150k баллов)
0 голосов

//PascalABC.NET

uses graphABC;
const W = 600; H =  600;

function F(x: real): real;
begin
  F := 1 / x;
end;

var
  x0, y0, x, y, xLeft, yLeft, xRight, yRight, n: integer;
  a, b, fmin, fmax, x1, y1, mx, my, dx, dy, num: real;
  i: byte;
  s: string;

begin
  SetWindowSize(W, H);
  xLeft := 10;
  yLeft := 10;
  xRight := W - 10;
  yRight := H - 10;
  a := -5; b := 5; dx := 1;
  fmin := -5; fmax := 5; dy := 1;
  mx := (xRight - xLeft) / (b - a);
  my := (yRight - yLeft) / (fmax - fmin);
  x0 := trunc(abs(a) * mx) + xLeft;
  y0 := H div 2;
  line(xLeft, y0, xRight + 10, y0);
  line(x0, yLeft - 10, x0, yRight);
  SetFontSize(12);
  SetFontColor(clBlue);
  TextOut(xRight + 20, y0 - 15, 'X');
  TextOut(x0 - 10, yLeft - 30, 'Y');
  SetFontSize(8);
  SetFontColor(clRed);
  n := round((b - a) / dx) + 1;
  for i := 1 to n do
  begin
    num := a + (i - 1) * dx;
    x := xLeft + trunc(mx * (num - a));
    Line(x, y0 - 3, x, y0 + 3);
    str(Num:0:0, s);
    if abs(num) > 1E-15 then
      TextOut(x - TextWidth(s) div 2, y0 + 10, s)
  end;
  n := round((fmax - fmin) / dy) + 1;
  for i := 1 to n do
  begin
    num := fMin + (i - 1) * dy;
    y := yRight - trunc(my * (num - fmin));
    Line(x0 - 3, y, x0 + 3, y);
    str(num:0:0, s);
    if abs(num) > 1E-15 then
      TextOut(x0 + 7, y - TextHeight(s) div 2, s)
  end;
  TextOut(x0 - 10, y0 + 10, '0');
  x1 := a;
  while x1 <= b do<br>  begin
    x := x0 + round(x1 * mx);
    y1 := F(x1);
    if y < H then y := y0 - round(y1 * my); 
    if (y >= yLeft) and (y <= yRight) then SetPixel(W - x, H - y, clGreen);<br>    if (y >= yLeft) and (y <= yRight) then SetPixel(x, y, clGreen);   <br>    x1 := x1 + 0.001;
  end;
end.

(9.4k баллов)
0

можно уточнить соответствует ли это знаниям 9-го класса, просто учительница может заподозрить

0

??

0

Вы же учитесь, вам виднее.