Hallo Leute,
Nur mal zur Erläuterung habe einen Code geschrieben, der mir nach Eingabe des Datum (von 1901-2099) den Wochentag dazu herausfindet! Funktioniert einwandfrei(obwohl noch nicht ganz optimiert und umständlich) bis auf die Monate August/September (08/09)...
Habe das Ganze so gemacht, dass er für jedes Monat einen eigenes Case macht, in dem er checkt ob das eingegebene Datum auch wirklich gültig ist und erst dann rechnen beginnt!
Nur ist das Problem jetzt sobal ich zB: das Datum 22/08/1987 eingebe und mir gleich darauf den gespeicherten Wert des Monats(also 8) wieder ausgeben lasse steht dort 0...das Gleiche auch bei 09. Die Sache ist nun die mein Code hat jetzt gute 200 Zeilen und ich werde nicht den Ganzen hier einstellen! Hoffe dass das so in Ordnung ist und mir irgendwer damit helfen könnte.
Lg Daniel
Nur mal zur Erläuterung habe einen Code geschrieben, der mir nach Eingabe des Datum (von 1901-2099) den Wochentag dazu herausfindet! Funktioniert einwandfrei(obwohl noch nicht ganz optimiert und umständlich) bis auf die Monate August/September (08/09)...
Habe das Ganze so gemacht, dass er für jedes Monat einen eigenes Case macht, in dem er checkt ob das eingegebene Datum auch wirklich gültig ist und erst dann rechnen beginnt!
Nur ist das Problem jetzt sobal ich zB: das Datum 22/08/1987 eingebe und mir gleich darauf den gespeicherten Wert des Monats(also 8) wieder ausgeben lasse steht dort 0...das Gleiche auch bei 09. Die Sache ist nun die mein Code hat jetzt gute 200 Zeilen und ich werde nicht den Ganzen hier einstellen! Hoffe dass das so in Ordnung ist und mir irgendwer damit helfen könnte.
Lg Daniel
Code:
int day,month,year;
int year_4,year_400,daysinmonth,monthdays,all,zsum,leapyear,weekday;
int main()
{
printf("ENTER DD/MM/YYYY\n"); //Gibt Am Bildschirm aus
scanf("%i/%i/%i", &day, &month, &year); //liest werte ein
printf("Zahl ist: %i\n",day);
printf("Zahl ist: %i\n",month);
year_4=(year % 4); //modulo v Schaltjahren berechnet
year_400=(year % 400); // genauso schaltjahr alle 400 jahre
isValidDate(day,month,year,year_4,year_400); // funktion Gültigkeitprüfung
return(0);
}
dayOfWeek(int day, int month, int year, int daysinmonth, int monthdays, int all, int zsum, int leapyear, int weekday)
{
if (month==1) {daysinmonth=31; monthdays=0;}
if (month==2) {daysinmonth=28; monthdays=31;}
if (month==3) {daysinmonth=31; monthdays=59;}
if (month==4) {daysinmonth=30; monthdays=90;}
if (month==5) {daysinmonth=31; monthdays=120;}
if (month==6) {daysinmonth=30; monthdays=151;}
if (month==7) {daysinmonth=31; monthdays=181;}
if (month==8) {daysinmonth=31; monthdays=212;}
if (month==9) {daysinmonth=30; monthdays=243;}
if (month==10) {daysinmonth=31; monthdays=273;}
if (month==11) {daysinmonth=30; monthdays=304;}
if (month==12) {daysinmonth=31; monthdays=334;}
//Hier würde die Berechnung und Tagesausgabe stehen...die stimmt zu 100%
isValidDate(int day, int month, int year, int year_4, int year_400)
{
if(day<32&&day>00&&month<13&&month>00&&year<2100&&year>1900)
switch(month)
{
case 1:
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
case 2:
{
if(year_4>0||year_400>0)
{
if(day<=28)
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
else
{
printf("Dieses Datum ist ungültig\n");
break;
}
}
else
{
if(year_4==0||year_400==0)
{
if(day<=29)
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
else
{
printf("Dieses Datum ist ungültig\n");
break;
}
}
}
}
//geht hier ganz gleich weiter.....jetzt kommen case 8/9 und da haut was nicht hin
//sind aber ganz gleich aufgebaut wie die restlichen Cases
case 8:
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
case 9:
{
if(day<31)
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
else
{
printf("Dieses Datum ist ungültig!\n");
break;
}
}
case 10:
{
printf("Dieses Datum ist gültig!\n");
dayOfWeek(day,month,year,daysinmonth,monthdays,all,zsum,leapyear,weekday);
break;
}
//Da standen Case 11 + 12
default: printf("Dieses Datum ist 1ungültig!\n");
}
else
printf("Dieses Datum ist 2ungültig!\n");
}