Mehr als ein Jahr liegt eh nie zwischen den Ferien
In der Überschrift ist aber nicht nur von Ferien die Rede.
Ich glaub aber die While-Schleife ist falsch, denn dort wird scheinbar ein Monat zu viel eingerechnet.
- vor der Schleife den Monat erhöhen
- und das
Result := Result + ...
an den Anfang der Schleife, bevor dort der Monat erhöt wird
Oder die Schleife muß einen Monat früher aufhören, also noch mal die Abbruchbedingung (mit
if then break;
) nach dem Erhöhen des Monats, bevor Addiert wird.
PS: Warum BOOL (Integer) und nicht Boolean (Byte und der Standardtyp im Delphi) ?
PPS: Warum
Integer Zahlen als Result, obwohl es Bool
ean sein sollten?
Notfalls sollte man auch B vor A abfangen, denn sonnst läuft deine Schleife ein Weilchen. (Byte+Integer = bis zu 1.099.511.627.775 Durchläufe)
- Dieses erkennen und eine
Exception werfen
- Dieses erkennen und einen "Fehler"-Wert zurückgeben (z.B. -1 oder MinInt)
- Dieses erkennen, die Werte austauschen, das Minus merken und am Ende das Result umdrehen (
Result := -Result;
)
- erkennen, austauschen, -1 oder 1 merken und am Ende damit multiplizieren