Построить в одной системе координат график функций y = ax3+bx2+c, y=ax|sinx| ** заданном...

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

Построить в одной системе координат график функций y = ax3+bx2+c, y=ax|sinx| на заданном промежутке. Промежуток и параметры для каждой функции вводятся пользователем.
Пожалуйста, напишите программу( или хотя бы объясните, что делать после write(' введите промежуток');


Информатика (153 баллов) | 95 просмотров
0

потом построить координаты а потом график)

Дан 1 ответ
0 голосов
Правильный ответ

Program abc;

uses GraphABC;
const
    scale = 20;
    step = 0.001;

var
    x0, y0, x1, y1: integer;
    x, y, min, max, a, b, c: real;

begin
    setwindowsize(1000, 800);
    DrawInBuffer := true;
    //    write(' введите промежуток для функции(min значение-enter- max значение) ');
    //    read(min, max);
    writeln('a=');
    read(a);
    writeln('b=');
    read(b);
    writeln('c=');
    read(c);
    
    x0 := WindowWidth div 2;
    y0 := WindowHeight div 2;
    line(20, y0, WindowWidth - 20, y0);
    line(x0, 20, x0, WindowHeight - 20);
    
    min := trunc((20 - x0) / scale);
    max := trunc((WindowWidth - 20 - x0) / scale);
    
    x := min;
    while x <= max do<br>    begin
        x1 := trunc(x0 + x * scale);
        
        y := a * x * x * x + b * x * x + c;
        y1 := trunc(y0 - y * scale);
        PutPixel(x1, y1, clGreen);
        
        y := a * x * abs(sin(x));
        y1 := trunc(y0 - y * scale);
        PutPixel(x1, y1, clBlue);
        
        x := x + step;
    end;
end.

(55.0k баллов)
0

Скажите, пожалуйста,что значит функция abs перед синусом, и можно ли как-то без нее обойтись,так как мы её не изучали.

0

И еще один вопрос(извините,пожалуйста, просто все каникулы разбираюсь с информатикой(я из филологов): там у нас еще третья функция былаy:= 1/ (x*x+ 3*x);
y1 := trunc(y0 - y * k);
PutPixel(x1, y1, clred);

0

я правильно записала её в трех строчках?(в паскале почему-то пишет ошибку времени выполнения и указывает на вторую строчку( y1:= trunc(y0-y*k); )

0

abs - это взятие модуля. У вас в функции модуль потому никак нельзя

0

если нужен промежуток то можно раскоментировать строчки вверху и закоментировать присвоение максимума и минимума

0

скорее всего там происходит деление на 0 или типа того

0

вставте так. Будет работать

0

if abs(x * x + 3 * x) > 0.1 then begin
y := 1 / (x * x + 3 * x);
y1 := trunc(y0 - y * scale);
PutPixel(x1, y1, clred);
end;

0

Спасииибо!!! (еще один вопрос: почему именно 0.1 пишем после if...>... ?)

0

нет особой причины. но с этим числом оно не падает. вообщем методом тыка найденая штука