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.