Also wenn man solche Bereiche einteilen will, ohne dass man etwas vergisst, dann ist folgendes Vorgehen ratsam:
Delphi-Quellcode:
function Group(
const Value : Extended ) : Integer;
begin
// man kann die oberen und unteren Grenzen im Vorfeld behandeln
if ( Value < 0 )
or ( Value >= 360 )
then
begin
// alternativ eine Exception werfen lassen
raise Exception.CreateFmt( '
Wert %f ungültig. (0° <= Wert < 360°)', [ Value ] );
// oder einfach einen Result zurückgeben, bei dem man weiß, da stimmt was nicht
Result := -1;
Exit;
end;
// oder wie hier beim Winkel kann man ja auch diesen umrechnen
while ( Value < 0 )
do
Value := Value + 360;
while ( Value >= 360 )
do
Value := Value - 360;
// *** ab hier geht der Vergleich los ***
// obere Grenze abfangen
if ( Value >= 360 )
then Result := -1
else if ( Value >= 270 )
then Result := 4
// 270 <= Value < 360
else if ( Value >= 180 )
then Result := 3
// 180 <= Value < 270
else if ( Value >= 90 )
then Result := 2
// 90 <= Value < 180
else if ( Value >= 0 )
then Result := 1
// 0 <= Value < 90
// untere Grenze abfangen
else Result := -1;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)