Lektion 18:

else if

Oh, ist das mit dem else aber häßlich geworden. Das if ist zwar konsequent eingerückt, aber das ist nicht hübsch. Wir einigen uns auf folgendes: Das if gleich nach einem else wird nicht eingerückt, sondern steht auf der Zeile des else.

 Wir stellen uns also vor, es gäbe nicht nur

if(bedingung)
   anweisung_1
else
   anweisung_2

sondern

if(bedingung)
   anweisung_1
else if
   anweisung_2
else if
   anweisung_3
else
   anweisung_n

An der Bedeutung ändert das nichts, aber es ist schöner zu lesen.

Für Freunde des Wortes else (Version 2):

bool istSchaltjahr(int jahr)
{
   if(jahr%400==0return true;
   else if(jahr%100==0return false;
   else if(jahr%4==0return true;
   else return false;
};

Übung:

Schreiben Sie eine Funktion

bool datumIstGueltig(int tag,int monat,int jahr)

so kurz wie möglich.

Schreiben Sie diese Funktion so einfach - im Sinne von verständlich - wie möglich.

Es soll überprüft werden, daß der Monat zwischen 1 und 12 liegt und daß der Tag zwischen 1 und der Anzahl der Tage des jeweiligen Monats liegt. Für den Februar wird die Jahreszahl benötigt. Falls Sie gerne Hilfsfunktionen verwenden würden, so erstellen Sie auch diese.

Tip:

Für die schöne Lösung schlage ich vor, zu entdecken, daß nur vier Monate 30 Tage haben. Den Februar muß man auf jeden Fall einzeln behandeln. Und der Rest hat dann 31 Tage.

Für die kürzeste Lösung ist es wohl hilfreich, zunächst anzunehmen, daß jeder zweite Monat 31 Tage hat. Weil das ab August nicht mehr stimmt, werden einfach die Monate ab August um eins vorverlegt. Ich würde mich natürlich freuen, noch lustigere Verfahren zu sehen.

Einsendungen:

Lösungsvorschlag


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00