Построить график функции - Turbo Pascal (29367)

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

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

Построить график функции

Решение задачи: «Построить график функции»

textual
Листинг программы
  1. uses graph;
  2. function F(x:real):real;
  3. var z,as:real;
  4. begin
  5. if x<=-3.5 then F:=4.95+cos(3*x)-sin(x)
  6. else if x>1 then F:=4.95+x+4
  7. else
  8.  begin
  9.   z:=(x+3.5)/5;
  10.   if z=-1 then as:=-pi/2
  11.   else if z=1 then as:=pi/2
  12.   else as:=arctan(z/(1-z*z));
  13.   F:=4.95+as;
  14.  end;
  15. end;
  16.  
  17. var a,b,mx,my,max:real;
  18.     x:real;
  19.     x0,y0,n,i:integer;
  20.     s:string;
  21. begin
  22. x0:=0;
  23. initgraph(x0,y0,'');{инициализация графического режима}
  24. a:=-5;
  25. b:=5;{интервал по Х}
  26. x0:=getmaxX div 2;{начало координат по Х}
  27. mx:=(x0-30)/b;{масштаб по Х}
  28. y0:=getmaxY div 2;
  29. max:=abs(F(a));
  30. x:=a;
  31. while x<=b do
  32.  begin
  33.   if abs(F(x))>max then max:=abs(F(x));
  34.   x:=x+0.1;
  35.  end;
  36. writeln('max=',max:0:2);
  37. my:=(y0-30)/max;
  38. line(0,y0,getmaxX,y0);{оси}
  39. line(x0,0,x0,getmaxY);
  40. if max>b then n:=trunc(max)+1 else n:=trunc(b);
  41. for i:=1 to n do{максимальное количество засечек в одну сторону}
  42.  begin
  43.   line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));{засечки на оси У}
  44.   line(x0-3,y0+round(i*my),x0+3,y0+round(i*my));
  45.   {подпись оси У}
  46.   str(i,s);
  47.   if i mod 2=0 then
  48.    begin
  49.     outtextXY(x0-25,y0-round(i*my),s);{соответственно засечкам}
  50.     outtextXY(x0-30,y0+round(i*my),'-'+s);
  51.    end;
  52.   line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); {засечки на оси Х}
  53.   line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
  54.   {подпись оси Х}
  55.   outtextXY(x0+round(i*mx)+5,y0+10,s);
  56.   outtextXY(x0-round(i*mx)+5,y0+10,'-'+s);
  57.  end;
  58. {центр}
  59. outtextXY(x0+5,y0+10,'0');
  60. {подписи концов осей}
  61. outtextXY(getmaxX-10,y0-10,'X');
  62. outtextXY(x0+5,10, 'Y');
  63. {график}
  64. x:=a;
  65. while x<=b do
  66.  begin
  67.   if abs(cos(x))>0.01 then putpixel(x0+round(x*mx),y0-round(F(x)*my),14);
  68.   x:=x+0.0001;
  69.  end;
  70. {ассимптоты}
  71. setcolor(10);
  72. setlinestyle(1,0,1);
  73. line(x0+round(-3.5*mx),0,x0+round(-3.5*mx),getmaxY);
  74. line(x0+round(mx),0,x0+round(mx),getmaxY);
  75. readln
  76. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут