-Firebat-
Lt. Commander
- Registriert
- Feb. 2007
- Beiträge
- 1.029
Hallo Community !
Ich versuche mich momentan daran, mir zu einem angegebenen Datum den Wochentag anzeigen zu lassen. Hab mich ja schon ein bisschen eingegoogelt und auch in der Wikipedia gelesen. Dafür gibt's ja mehrere Möglichkeiten. Stichwort Gaußschen Kalendeformel oder Zellers Kongruenz. Ich hab versucht, das ganze (vorläufig) mit der Gaußschen Kalenderformel zu realisieren. Die Berechnung klappt auch ohne Probleme, allerdings rechnet das Programm auch mit ungültigen Daten wie dem 30.02.2008. Und das ist mein jetziges Problem. Wie bekomme ich das Programm dazu, nur mit gültigen Daten zu rechnen? Sollte das "zu viel Aufwand" sein, kann ich auch auf Zellers Kongruenz wechseln, aber da finde ich die Formel ganz schön kompliziert. Ich möchte ja auch verstehen, was ich da mache und nicht einfach Copy&Paste. Hier erstmal mein jetziger Code.
Ich wäre euch sehr dankbar, wenn da jemand mal drübergucken könnte und mir vielleicht erklären könnte, wie ich das programm dazu kriege, das datum vielleicht vorher auf Gültigkeit hin zu überprüfen. Danke.
Gruß Fusseltuch
Ich versuche mich momentan daran, mir zu einem angegebenen Datum den Wochentag anzeigen zu lassen. Hab mich ja schon ein bisschen eingegoogelt und auch in der Wikipedia gelesen. Dafür gibt's ja mehrere Möglichkeiten. Stichwort Gaußschen Kalendeformel oder Zellers Kongruenz. Ich hab versucht, das ganze (vorläufig) mit der Gaußschen Kalenderformel zu realisieren. Die Berechnung klappt auch ohne Probleme, allerdings rechnet das Programm auch mit ungültigen Daten wie dem 30.02.2008. Und das ist mein jetziges Problem. Wie bekomme ich das Programm dazu, nur mit gültigen Daten zu rechnen? Sollte das "zu viel Aufwand" sein, kann ich auch auf Zellers Kongruenz wechseln, aber da finde ich die Formel ganz schön kompliziert. Ich möchte ja auch verstehen, was ich da mache und nicht einfach Copy&Paste. Hier erstmal mein jetziger Code.
Code:
// Bestimmung des Wochentags durch Eingabe eines Datums inkl. Gueltigkeitspruefung nach der Gaussschen Kalenderformel
#include <iostream>
using namespace std;
int main()
{
int w_tag=0,tag=0,monat=0,jahr=0;
cout << "Bestimmung des Wochentags aus dem Datum mit Hilfe der Gaussschen Kalenderformel" << endl << endl;
cout << "Bitte Tag (xx) eingeben : ";
cin >> tag;
cout << "Bitte Monat (xx) eingeben : ";
cin >> monat;
cout << "Bitte Jahr (xxxx) eingeben : ";
cin >> jahr;
int h = monat, k = jahr;
if (monat < 3)
{
h = monat + 12;
k = jahr-1;
}
w_tag = ((tag+2*h) + ((3*h+3)/5) + k + (k/4) - (k/100) + (k/400) + 1)%7;
switch (w_tag)
{
case 0 : cout << "Sonntag";
break;
case 1 : cout << "Montag";
break;
case 4 : cout << "Donnerstag";
break;
case 2 : cout << "Dienstag";
break;
case 5 : cout << "Freitag";
break;
case 3 : cout << "Mittwoch";
break;
case 6 : cout << "Samstag";
break;
default: cout << "ungueltige Eingabe";
}
cin.get();
cin.get();
return 0;
}
Ich wäre euch sehr dankbar, wenn da jemand mal drübergucken könnte und mir vielleicht erklären könnte, wie ich das programm dazu kriege, das datum vielleicht vorher auf Gültigkeit hin zu überprüfen. Danke.
Gruß Fusseltuch