#include using namespace std; bool istSchaltjahr(int jahreszahl) // Aufbau der Kopfzeile einer Funktion ist immer wie folgt: // () // Datentyp bool kann die Werte true und false annehmen { if (jahreszahl % 4 == 0) { if (jahreszahl % 100 == 0) { if (jahreszahl % 400 == 0) { return true; // an dieser Stelle wird die Funktion // istSchaltjahr beendet und das Programm springt an die // Stelle zurück, an der istSchaltjahr aufgerufen wurde. // An der Stelle wird quasi der Aufruf istSchaltjahr(...) // durch den Wert ersetzt, der hier mittels return // zurückgegeben wird. } else { return false; } } else { return true; } } else // jahreszahl %4 != 0 { return false; } } // Ende istSchaltjahr bool tageszahlOK(int tage, int tageImMonat) // gibt true zurück wenn der Parameter tage zwischen 1 und tageImMonat liegt { if (1 <= tage && tage <= tageImMonat) { return true; } else { return false; } } void ausgabeDatumIstGueltig(void) // nur als Beispiel für eine Funktion ohne Parameter und ohne Rückgabewert { cout << "Das Datum ist gültig!" << endl; } int main(void) { int tag, monat, jahr; cout << "Gib bitte einen Tag Monat und Jahr ein: "; cin >> tag >> monat >> jahr; if (1 <= monat && monat <= 12) // && verknüpft zwei boolsche Werte // in diesem Fall das Ergebnis des Vergleichs 1 <= monat und // das Ergebnis des Vergleichs monat <= 12 // das Ergebnis ist wahr, wenn beide Vergleich sich zu wahr auswerten { if (monat == 2) { if (istSchaltjahr(jahr)) { if (tageszahlOK(tag,29)) { ausgabeDatumIstGueltig(); } else { cout << "Das Datum ist nicht gültig!" << endl; } } else // Februar, aber kein Schaltjahr { if (1 <= tag && tag <= 28) { cout << "Das Datum ist gültig!" << endl; } else { cout << "Das Datum ist nicht gültig!" << endl; } } } // Ende Februar else if (monat == 4 || monat == 6 || monat == 9 || monat == 11) // das || ist eine logische ODER-Verknüpfung // wertet sich zu wahr aus, wenn wenigstens ein Operand wahr ist { if (1 <= tag && tag <= 30) { cout << "Das Datum ist gültig!" << endl; } else { cout << "Das Datum ist nicht gültig!" << endl; } } else // es ist ein Monat mit 31 Tagen { if (1 <= tag && tag <= 31) { cout << "Das Datum ist gueltig!" << endl; } else { cout << "Das Datum ist nicht gültig!" << endl; } } } // Monat liegt zwischen 1 und 12 else { cout << "Das Datum ist nicht gültig (Monat out of range)!" << endl; } // if (istSchaltjahr(jahreszahl)) //{ // cout << jahreszahl << " ist ein Schaltjahr!" << endl; //} //else //{ // cout << jahreszahl << " ist kein Schaltjahr!" << endl; //} cout << "Demonstration von Zählschleifen" << endl; // Aufgabe: Quadratzahlen von 1 bis 10 int zaehler; for (zaehler = 1; zaehler <= 10; zaehler = zaehler + 1) // generelle Aufbau einer for-Schleife ist wie folgt: // for ( ; ; <"Inkrement">) // die Initialisierung wird EINMALIG VOR Eintritt in die Schleife ausgeführt // die Abbruchbedingung wird zu BEGINN jedes Schleifendurchlaufs getestet // Eintritt in die Schleife SOLANGE die Bedingung erfüllt ist // das Inkrement wird am ENDE jedes Schleifendurchlaufs ausgeführt { // wie bei der if-Anweisung wird das zu wiederholende in geschweifte Klammern eingeschlossen cout << "Die Quadratzahl von " << zaehler << " ist " << zaehler * zaehler << endl; } return 0; }