profile
Опубликовано 6 лет назад по предмету Информатика от vasyarobbek

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

  1. Ответ
    Ответ дан pacixor
    //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
      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);
        if (y >= yLeft) and (y <= yRight) then SetPixel(x, y, clGreen);  
        x1 := x1 + 0.001;
      end;
    end.
    1. Ответ
      Ответ дан vasyarobbek
      можно уточнить соответствует ли это знаниям 9-го класса, просто учительница может заподозрить
    2. Ответ
      Ответ дан vasyarobbek
      ??
    3. Ответ
      Ответ дан pacixor
      Вы же учитесь, вам виднее.
  2. Ответ
    Ответ дан Аккаунт удален
    PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
    Внимание! Если программа не работает, обновите версию!

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

    uses GraphABC;

    begin
      Draw(x->1/x) 
    end.
Самые новые вопросы