49 lines
1.0 KiB
ObjectPascal
49 lines
1.0 KiB
ObjectPascal
Program Bearings;
|
|
{ Reads pairs of angles from a file and subtracts them }
|
|
|
|
Const
|
|
fileName = 'angles.txt';
|
|
|
|
Type
|
|
degrees = real;
|
|
|
|
Var
|
|
subtrahend, minuend: degrees;
|
|
angleFile: text;
|
|
|
|
function Simplify(angle: degrees): degrees;
|
|
{ Returns an number in the range [-180.0, 180.0] }
|
|
begin
|
|
while angle > 180.0 do
|
|
angle := angle - 360.0;
|
|
while angle < -180.0 do
|
|
angle := angle + 360.0;
|
|
Simplify := angle
|
|
end;
|
|
|
|
function Difference(b1, b2: degrees): degrees;
|
|
{ Subtracts b1 from b2 and returns a simplified result }
|
|
begin
|
|
Difference := Simplify(b2 - b1)
|
|
end;
|
|
|
|
procedure Subtract(b1, b2: degrees);
|
|
{ Subtracts b1 from b2 and shows the whole equation onscreen }
|
|
var
|
|
b3: degrees;
|
|
begin
|
|
b3 := Difference(b1, b2);
|
|
writeln(b2:20:11, ' - ', b1:20:11, ' = ', b3:20:11)
|
|
end;
|
|
|
|
Begin
|
|
assign(angleFile, fileName);
|
|
reset(angleFile);
|
|
while not eof(angleFile) do
|
|
begin
|
|
readln(angleFile, subtrahend, minuend);
|
|
Subtract(subtrahend, minuend)
|
|
end;
|
|
close(angleFile)
|
|
End.
|