Schalttjahr
-
Mahlzeit, kurze Frage...
ich möchte eine Jahreszahl überprüfen, ob sie zu einem Schaltjahr gehört. Hab mir http://de.wikipedia.org/wiki/Schaltjahr kurz gelesen.
Bin etwas durchn Wind, deshalb kurz nochmal zur Sicherheit ^^
Ich muss lediglich prüfen, ob die Jahreszahl durch 400 o. 4 teilbar ist, oder?
-
Nein, Du musst nacheinander prüfen, ob die Zahl durch 4, 100, 400 teilbar ist.
-
Das stimmt.
-
besten dank
-
ähmm ...
bool wbase::is_leap_year( const long year ) { if ( integer_division( year, 4 ).second ) { if ( integer_division( year, 100 ).second ) { if ( integer_division( year, 400 ).second ) { return true; } } } return false; }
wobei integer_division einen std::pair zurückgibt und second der rest ist.
Auf http://kalender-365.de/schaltjahre.php hab ich mal die erste Zahl zum Test genommen:
1804/4 = 451
1804/100 = 18,04also doch kein Schaltjahr? Gut, untendrunter steht "Schaltjahreskalender 1800 - 2400. Alle Angaben ohne Gewähr." Jetzt bin ich nochmehr verwirrt oO ... bitte eine kurze idiotensichere Aufklärung ^^
-
schaltjahr schrieb:
ähmm ...
bool wbase::is_leap_year( const long year ) { if ( integer_division( year, 4 ).second ) { if ( integer_division( year, 100 ).second ) { if ( integer_division( year, 400 ).second ) { return true; } } } return false; }
Das hast du wohl ein bisschen falsch verstanden, wann ein Schaltjahr ist. Korrekt wäre:
bool wbase::is_leap_year( const long year ) { if ( integer_division( year, 4 ).second ) { if ( integer_division( year, 100 ).second ) { if ( integer_division( year, 400 ).second ) { return true; // Durch 4, 100 und 400 teilbar } else { return false; // Durch 4, 100, aber nicht 400 teilbar } } else { return true; // Durch 4 aber nicht durch 100 teilbar } } return false; // Nicht durch 4 teilbar }