Создайте программу, которая будет рисовать график тангенса (В Паскале нет функции для...

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

Создайте программу, которая будет рисовать график
тангенса (В Паскале нет функции для вычисления
тангенса, но есть функции для вычисления синуса и
косинуса — используйте их)

Срочнооо,помогите пожалуйста!


image
image

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

а можешь написать программу?

0

есть условия,сейчас добавлю сюда скрины

0

все,добавила

0

а не подскажите,как на называется,чтобы её найти?

Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1381 от 04.02.2017
// Внимание! Если программа не работает, обновите версию!

uses graphABC;
const
  w=1000;
  h=600;

function f(x:real):=Tan(x);

begin
  SetWindowSize(w,h);
  // поле для графика в окне
  var xLeft:=50;
  var yLeft:=50;
  var xRight:=w-xLeft;
  var yRight:=h-yLeft;
  // интервалы по осям
  var ax:=-7.0;
  var bx:=7.0;
  var hx:=0.5;
  var ay:=-10.0; // минимум f(x) с запасом
  var by:=10.0;
  var hy:=1.0;
  // масштабы по осям
  var mx:=(xRight-xLeft)/(bx-ax);
  var my:=(yRight-yLeft)/(by-ay);
  // точка начала координат графика
  var x0:=xLeft+Trunc(abs(ax)*mx);
  var y0:=yRight-Trunc(abs(ay)*my);
  // рисование координатных осей
  Line(xLeft,y0,xRight+10,y0);
  Line(x0,yLeft-10,x0,yRight);
  SetFontSize(12); SetFontColor(clBlue);
  TextOut(xRight+15,y0-10,'X');
  TextOut(x0-4,yLeft-30,'Y');
  SetFontSize(8); SetFontColor(clGreen);
  // рисование засечек
  var s:string;
  for var i:=1 to Round((bx-ax)/hx)+1 do begin
    var num:=ax+(i-1)*hx;
    var x:=xLeft+Trunc(mx*(num-ax));
    Line(x,y0-3,x,y0+3);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)
    end;
  for var i:=1 to Round((by-ay)/hy)+1 do begin
    var num:=ay+(i-1)*hy;
    var y:=yRight-Trunc(my*(num-ay));
    Line(x0-3,y,x0+3,y);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)
    end;
    TextOut(x0-10,y0+10,'0');
  // собственно график
  var xi:=ax;
  while xi<=bx do begin<br>    var yi:=f(xi);
    var x:=x0+Round(xi*mx);
    var y:=y0-Round(yi*my);
    if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);<br>    xi+=1e-3
    end
end.

Пример работы - во вложении

image
(150k баллов)
0

оххх....спасибо большое

0

Можно узнать еще,вы создавали программу по тем условиям,которые на скринах?

0

т.е по моим отрывкам программу не написать?

0

ок,спасибо еще раз