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.
<em><u>Результат выполнения программы:</u></em> f(a,b)=4.000 f(c,d)=8.944
<em><u>Более "красивое" решение с пользовательским типом данных.</u></em> 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.
Var a: integer; t,s: boolean; begin t := true; read(a); s := a > 0; if a <> 0 then read(a); while t and (a <> 0) do begin t := (a > 0) <> s; s := not s; read(a) end; writeln(t) end.