45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
FROM Terminal IMPORT *;
|
|
|
|
PROCEDURE WriteRealLn(value : REAL);
|
|
VAR str : ARRAY[0..16] OF CHAR;
|
|
BEGIN
|
|
RealToStr(value, str);
|
|
WriteString(str);
|
|
WriteLn;
|
|
END WriteRealLn;
|
|
|
|
PROCEDURE AngleDifference(b1, b2 : REAL) : REAL;
|
|
VAR r : REAL;
|
|
BEGIN
|
|
r := (b2 - b1);
|
|
WHILE r < -180.0 DO
|
|
r := r + 360.0;
|
|
END;
|
|
WHILE r >= 180.0 DO
|
|
r := r - 360.0;
|
|
END;
|
|
RETURN r;
|
|
END AngleDifference;
|
|
|
|
BEGIN
|
|
WriteString('Input in -180 to +180 range');
|
|
WriteLn;
|
|
WriteRealLn(AngleDifference(20.0, 45.0));
|
|
WriteRealLn(AngleDifference(-45.0, 45.0));
|
|
WriteRealLn(AngleDifference(-85.0, 90.0));
|
|
WriteRealLn(AngleDifference(-95.0, 90.0));
|
|
WriteRealLn(AngleDifference(-45.0, 125.0));
|
|
WriteRealLn(AngleDifference(-45.0, 145.0));
|
|
WriteRealLn(AngleDifference(29.4803, -88.6381));
|
|
WriteRealLn(AngleDifference(-78.3251, -159.036));
|
|
|
|
WriteString('Input in wider range');
|
|
WriteLn;
|
|
WriteRealLn(AngleDifference(-70099.74233810938, 29840.67437876723));
|
|
WriteRealLn(AngleDifference(-165313.6666297357, 33693.9894517456));
|
|
WriteRealLn(AngleDifference(1174.8380510598456, -154146.66490124757));
|
|
WriteRealLn(AngleDifference(60175.77306795546, 42213.07192354373));
|
|
|
|
ReadChar;
|
|
END Bearings.
|