38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
program BoxTheCompass(output);
|
|
|
|
function compasspoint(angle: real): string;
|
|
const
|
|
points: array [1..32] of string =
|
|
('North ', 'North by east ', 'North-northeast ', 'Northeast by north',
|
|
'Northeast ', 'Northeast by east ', 'East-northeast ', 'East by north ',
|
|
'East ', 'East by south ', 'East-southeast ', 'Southeast by east ',
|
|
'Southeast ', 'Southeast by south', 'South-southeast ', 'South by east ',
|
|
'South ', 'South by west ', 'South-southwest ', 'Southwest by south',
|
|
'Southwest ', 'Southwest by west ', 'West-southwest ', 'West by south ',
|
|
'West ', 'West by north ', 'West-northwest ', 'Northwest by west ',
|
|
'Northwest ', 'Northwest by north', 'North-northwest ', 'North by west '
|
|
);
|
|
var
|
|
index: integer;
|
|
begin
|
|
index := round (angle / 11.25);
|
|
index := index mod 32 + 1;
|
|
compasspoint := points[index];
|
|
end;
|
|
|
|
var
|
|
i: integer;
|
|
heading: real;
|
|
|
|
begin
|
|
for i := 0 to 32 do
|
|
begin
|
|
heading := i * 11.25;
|
|
case (i mod 3) of
|
|
1: heading := heading + 5.62;
|
|
2: heading := heading - 5.62;
|
|
end;
|
|
writeln((i mod 32) + 1:2, ' ', compasspoint(heading), ' ', heading:8:4);
|
|
end;
|
|
end.
|