Предмет: Информатика, автор: cryacktv

Напишите программу пожалуйста

Определить полярные координаты точки, заданные декартовыми координатами (x,y) по формулам f=arctg(x/y), r=√x^2+y^2. При вычислении угла @ необходимо учесть, что значение х может быть равно нулю, а угол может находиться в различных четвертях.

Ответы

Автор ответа: Аноним
0
phi=begin {cases} arctg( frac{y}{x}),  x>0 \ arctg( frac{y}{x})+pi,  x<0,y geq 0 \  arctg( frac{y}{x})-pi,  x<0,y<0  \  frac{pi}{2},  x=0,y>0 \ -frac{pi}{2},  x=0,y<0  \ 0,  x=0,y=0 end {cases}

procedure Polar(x, y: real; var r, f: real);
begin
  r := sqrt(sqr(x) + sqr(y));
  if x = 0 then
    if y = 0 then f := 0
    else
    if y > 0 then f := Pi / 2 else f := -Pi / 2
  else begin
    f := arctan(y / x);
    if x < 0 then
      if y >= 0 then f := f + Pi else f := f - Pi
  end
end;

{ тестовое решение }
var
  R, Fi: real;

begin
  Polar(1, 1, R, Fi);
  Writeln('(+1;+1) -> (', R, ';', Fi, ')');
  Polar(1, -1, R, Fi);
  Writeln('(+1;-1) -> (', R, ';', Fi, ')');
  Polar(-1, 1, R, Fi);
  Writeln('(-1;+1) -> (', R, ';', Fi, ')');
  Polar(-1, -1, R, Fi);
  Writeln('(-1;-1) -> (', R, ';', Fi, ')');
  Polar(0, 1, R, Fi);
  Writeln('(0;+1)  -> (', R, ';', Fi, ')');
  Polar(0, -1, R, Fi);
  Writeln('(0;-1)  -> (', R, ';', Fi, ')');
  Polar(0, 0, R, Fi);
  Writeln('(0;0)   -> (', R, ';', Fi, ')');
end.

Тестовое решение:

(+1;+1) -> (1.4142135623731;0.785398163397448)
(+1;-1) -> (1.4142135623731;-0.785398163397448)
(-1;+1) -> (1.4142135623731;2.35619449019234)
(-1;-1) -> (1.4142135623731;-2.35619449019234)
(0;+1)  -> (1;1.5707963267949)
(0;-1)  -> (1;-1.5707963267949)
(0;0)   -> (0;0)


Похожие вопросы