Написать программу, которая выводит на экран график любой функции представляющей собой многочлен не выше 5-ой степени

SkyLark_71

написать программу которая выводит на экран график любой функции представляющей собой многочлен не выше 5-ой степени
6 ответов

SkyLark_71


SkyLark_71

ZX Spectrum-128, я нашел в интернете вот такой код но у меня почему-то выдает ошибку
program zgr;
uses graph;
const m=50;
      cx=300;
      cy=200;
var gd,gm:integer;  
 grdriver,grmode,errcode:integer;
    grpath:string;
 
    c0,c1,c2,c3,c4,c5:real;
    a,b,x,y,h:real;
    x1,x2,y1,y2:integer;
 
function f(x:real):real;
 begin
  f:=c0+c1*x+c2*x*x+c3*x*x*x+c4*x*x*x*x+c5*x*x*x*x*x;
 end;
 
begin
grDriver:=vga;
grmode:=vgahi;
grPath:='w:\bp\bgi';
InitGraph (grDriver, grMode,grPath);
ErrCode:=graphresult;
if errcode<>grok then
begin
writeln ('Ошибка!');
writeln ('enter');
readln;
halt (1);
end;
 writeln('Программа строит график функции многочлена до 5 степени включительно.');
 writeln('Введите коэффициенты c0 c1 c2 c3 c4 c5');
 readln(c0,c1,c2,c3,c4,c5);
 writeln('Введите отрезок и шаг a b h');
 readln(a,b,h);
 repeat
 x:=a;
 x1:=cx+Round(m*a);
 y1:=cy-Round(m*f(a));
 while x<=b do
  begin
   x2:=cx+Round(m*x);
   y2:=cy-Round(m*f(x));
   Line(x1,y1,x2,y2);
   x1:=x2;
   y1:=y2;
   x:=x+h;
  end;
 
 Line(0,cy,2*cx,cy);
 Line(cx,0,cx,2*cy);
 until (x>b);
 readln;
 closegraph;
end.


SkyLark_71

Какую ошибку выдает? Код написан плохо, например нет контроля за вводом, нет масштабов по осям просто 1 масштаб m=50, не учитывающий значения a,b и максимальное и минимальное значения f(x) . Нужно ввести b>a, h


SkyLark_71

Puporev, я что-то совсем туплю не поможете это сделать ?Puporev, Я нашел вот такой код только не пойму как он работает помогите пжлста
program zgr;
uses graph;
const m=50;
      cx=300;
      cy=200;
var gd,gm:integer;  
 grdriver,grmode,errcode:integer;
    grpath:string;
 
    c0,c1,c2,c3,c4,c5:real;
    a,b,x,y,h:real;
    x1,x2,y1,y2:integer;
 
function f(x:real):real;
 begin
  f:=c0+c1*x+c2*x*x+c3*x*x*x+c4*x*x*x*x+c5*x*x*x*x*x;
 end;
 
begin
grDriver:=vga;
grmode:=vgahi;
grPath:='w:\bp\bgi';
InitGraph (grDriver, grMode,grPath);
ErrCode:=graphresult;
if errcode<>grok then
begin
writeln ('Ошибка!');
writeln ('enter');
readln;
halt (1);
end;
 writeln('Программа строит график функции многочлена до 5 степени включительно.’);
 writeln(‘Введите коэффициенты c0 c1 c2 c3 c4 c5');
 readln(c0,c1,c2,c3,c4,c5);
 writeln('Введите отрезок и шаг a b h');
 readln(a,b,h);
 repeat
 x:=a;
 x1:=cx+Round(m*a);
 y1:=cy-Round(m*f(a));
 while x<=b do
  begin
   x2:=cx+Round(m*x);
   y2:=cy-Round(m*f(x));
   Line(x1,y1,x2,y2);
   x1:=x2;
   y1:=y2;
   x:=x+h;
  end;
 
 Line(0,cy,2*cx,cy);
 Line(cx,0,cx,2*cy);
 until (x>b);
 readln;
 closegraph;
end.


SkyLark_71

только не пойму как он работает
А я то тут при чем? Я не писал этот код и ковыряться в нем не намерен.


SkyLark_71

Puporev, а новый поможете написать ?