24 lines
1.3 KiB
Text
24 lines
1.3 KiB
Text
$ include "seed7_05.s7i";
|
|
include "float.s7i";
|
|
|
|
const array string: names is [] ("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", "North");
|
|
|
|
const proc: main is func
|
|
local
|
|
const array float: degrees is [] (0.0, 16.87, 16.88, 33.75, 50.62, 50.63, 67.5, 84.37, 84.38,
|
|
101.25, 118.12, 118.13, 135.0, 151.87, 151.88, 168.75, 185.62, 185.63, 202.5, 219.37, 219.38,
|
|
236.25, 253.12, 253.13, 270.0, 286.87, 286.88, 303.75, 320.62, 320.63, 337.5, 354.37, 354.38);
|
|
var integer: index is 0;
|
|
var integer: nameIndex is 0;
|
|
begin
|
|
for key index range degrees do
|
|
nameIndex := round(degrees[index] * 32.0 / 360.0);
|
|
writeln(succ(pred(index) rem 32) lpad 2 <& " " <& names[succ(nameIndex rem 32)] rpad 22 <&
|
|
degrees[index] digits 2 lpad 6);
|
|
end for;
|
|
end func;
|