Вывод графика - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Помогите сделать вывод графика, пожаалуйстаа!

Решение задачи: «Вывод графика»

textual
Листинг программы
uses graphABC;
function F(x:real):real;
begin
if x<=-6 then F:=-sqrt(9-sqr(x+6))
else if x<=-3 then F:=x+3
else if x<=0 then F:=sqrt(9-x*x)
else if x<=3 then F:=-x+3
else F:=0.5*x-1.5;
end;
var x,max,min,mx,my,dx:real;
    x0,y0,xn,xk,i:integer;
begin
setwindowsize(800,320);
centerwindow;
xn:=-9;
xk:=9;//интервал по Х
x0:=windowwidth div 2;
mx:=(x0-40)/xk;//масштаб по Х
y0:=windowheight div 2;
my:=(y0-40)/3;
line(0,y0,windowwidth-10,y0);///оси
line(windowwidth,y0,windowwidth-10,y0-5);
line(windowwidth,y0,windowwidth-10,y0+5);
line(windowwidth-10,y0-5,windowwidth-10,y0+5);
floodfill(windowwidth-8,y0,clBlack);
setfontsize(10);
textout(windowwidth-10,y0-20,'X');
line(x0,10,x0,windowheight);
line(x0,0,x0-5,10);
line(x0,0,x0+5,10);
line(x0-5,10,x0+5,10);
floodfill(x0,8,clBlack);
textout(x0+10,0,'Y');
for i:=1 to 9 do//максимальное количество засечек в одну сторону
 begin
  if i<4 then
   begin
    line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));//засечки на оси У
    line(x0-3,y0+round(i*my),x0+3,y0+round(i*my));
    textout(x0-20,y0-round(i*my),inttostr(i));//подпись оси У соответственно засечкам
    textout(x0-20,y0+round(i*my),inttostr(-i));
   end;
  line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); //засечки на оси Х
  textout(x0+round(i*mx),y0+10,inttostr(i));//подпись оси Х
  line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
  textout(x0-round(i*mx),y0+10,inttostr(-i));
 end;
//центр
textout(x0+5,y0+10,'0');
//график
setpenwidth(2);
x:=xn;
while x<=xk do
 begin
  if x=xn then moveto(x0+round(x*mx),y0-round(F(x)*my))
  else lineto(x0+round(x*mx),y0-round(F(x)*my));
  x:=x+0.01;
 end;
end.

Объяснение кода листинга программы

  1. Объявлены переменные: x, max, min, mx, my, dx, x0, y0, xn, xk, i.
  2. Заданы размеры окна и его расположение.
  3. Заданы координаты для осей X и Y.
  4. Выведены линии и подписи для оси X.
  5. Выведены линии и подписи для оси Y.
  6. Выведены линии и подписи для всех засечек на оси X.
  7. Выведены линии и подписи для всех засечек на оси Y.
  8. Выведена точка (0,0) в центре графика.
  9. Установлен размер и стиль пера.
  10. Переменная x инициализируется значением xn.
  11. В цикле while рисуется график функции F(x).
  12. Координаты каждой точки графика вычисляются с помощью функции F(x).
  13. При достижении xk, цикл завершается.
  14. Функция F(x) определена в начале кода.
  15. Значение функции F(x) вычисляется в зависимости от диапазона значений x.
  16. Функция F(x) принимает значение -sqrt(9-sqr(x+6)) при x<=-6, x+3 при x<=-3, sqrt(9-xx) при x<=0 и -x+3 при x<=3, и 0.5x-1.5 в противном случае.

Оцени полезность:

8   голосов , оценка 3.75 из 5