Задача ** паскале помогите с решение

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

Задача на паскале помогите с решение


image

Информатика (83 баллов) | 34 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Function p(x,y:real):real;
begin
  p:=sqrt(sqr(x)+sqr(y))
end;

function fi(x,y:real):real;
begin
  fi:=arctan(y/x)
end;

function f(x1,y1,x2,y2:real):real;
var
  p1,p2,fi1,fi2:real;
begin
  p1:=p(x1,y1); p2:=p(x2,y2);
  fi1:=fi(x1,y1); fi2:=fi(x2,y2);
  f:=sqrt(sqr(p1)+sqr(p2)-2*p1*p2*cos(fi2-fi1));
end;

var
  ax,ay,bx,by,cx,cy,dx,dy:real;
begin
  ax:=2; ay:=5;
  bx:=2; by:=1;
  cx:=20; cy:=4;
  dx:=12; dy:=8;
  Writeln('f(a,b)=',f(ax,ay,bx,by):0:3);
  Writeln('f(c,d)=',f(cx,cy,dx,dy):0:3)
end.

Результат выполнения программы:
f(a,b)=4.000
f(c,d)=8.944

Более "красивое" решение с пользовательским типом данных.
type
  Point=record
    x,y:real
  end;

function p(A:Point):real;
begin
  p:=sqrt(sqr(A.x)+sqr(A.y))
end;

function fi(A:Point):real;
begin
  fi:=arctan(A.y/A.x)
end;

function f(A,B:Point):real;
var
  p1,p2,fi1,fi2:real;
begin
  p1:=p(A); fi1:=fi(A);
  p2:=p(B); fi2:=fi(B);
  f:=sqrt(sqr(p1)+sqr(p2)-2*p1*p2*cos(fi2-fi1));
end;

var
  A,B,C,D:Point;
begin
  A.x:=2; A.y:=5;
  B.x:=2; B.y:=1;
  C.x:=20; C.y:=4;
  D.x:=12; D.y:=8;
  Writeln('f(A,B)=',f(A,B):0:3);
  Writeln('f(C,D)=',f(C,D):0:3)
end.


(142k баллов)