Unit P165_4a;   { Parag 14 }
{--------------------------------------------------------------
    Sa se scrie un unit care va contine subprograme pentru:
    1) Tranformarea masurii unghiului din grade in radiani
       si invers;
    2) Calcularea sumei masurilor a doua unghiuri;
    3) Compararea a doua unghiuri.  
 --------------------------------------------------------------}
INTERFACE
{--------------------------------------------------------------}
const 
  toGrad = 180 / pi;
  toRad  = pi / 180;
  rotComplGrad = 360;
  rotComplRad  = rotComplGrad * toRad;
{--------------------------------------------------------------}
type
  TGrad = integer;
  TRad  = real;
{--------------------------------------------------------------}
{ 1) }
function grade(r: TRad): TGrad;   
function radiani(g: TGrad): TRad; 
{ 2) }
function normGrad(g: TGrad): TGrad; { NormGrad > 0 }
function sumGrad(g1,g2: TGrad): TGrad;
{ 3) }
function difGrad(g1,g2: TGrad): TGrad;
function compGrad(g1,g2: TGrad): char;
{--------------------------------------------------------------}
IMPLEMENTATION
{--------------------------------------------------------------}
function grade(r: TRad): TGrad;   
begin grade := round(toGrad * r) end;
{--------------------------------------------------------------}
function radiani(g: TGrad): TRad; 
begin radiani := round(toRad * g) end;
{--------------------------------------------------------------}
function normGrad(g: TGrad): TGrad; 
begin normGrad := ((g mod rotComplGrad)+rotComplGrad)mod rotComplGrad; end;
{--------------------------------------------------------------}
function sumGrad(g1,g2: TGrad): TGrad;
begin sumGrad := normGrad(g1 + g2); end;
{--------------------------------------------------------------}
function difGrad(g1,g2: TGrad): TGrad;
begin difGrad := normGrad(g1 - g2); end;
{--------------------------------------------------------------}
function compGrad(g1,g2: TGrad): char;
begin
  g1 := normGrad(g1) - normGrad(g2);
  if g1 > 0 then compGrad := '>' else
  if g1 < 0 then compGrad := '<' else 
                 compGrad := '=';
end;
{--------------------------------------------------------------}

END.
