2017-04-02 17:06:39 +02:00
# include<iostream>
# include<string>
# include<sstream>
# include<conio.h>
2017-12-05 19:23:11 +01:00
# include <stdio.h>
2017-04-02 17:06:39 +02:00
int main ( )
{
2017-04-08 17:40:10 +02:00
//Aufgabe: Kombiniere dieses Programm mit dem jeweils anderen im Kalender Ordner.
2017-04-02 17:06:39 +02:00
2017-04-08 17:40:10 +02:00
std : : string input ;
unsigned short day = 0 , month = 0 , daysInMonth [ ] = { 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } , year = 0 ;
2017-04-02 17:06:39 +02:00
2017-12-05 19:23:11 +01:00
printf ( " Gib den Tag des Monats ein: " ) ;
2017-04-08 17:40:10 +02:00
do
2017-04-02 17:06:39 +02:00
{
2017-04-08 17:40:10 +02:00
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > day ;
2017-12-05 19:23:11 +01:00
if ( day > 31 | | day < 1 ) printf ( " ERROR: Der eingegebene Tag existiert nicht. Gib einen Tag zwischen 1 und 31 ein: " ) ;
2017-04-08 17:40:10 +02:00
} while ( day > 31 | | day < 1 ) ;
2017-04-02 17:06:39 +02:00
2017-12-05 19:23:11 +01:00
printf ( " Gib den Monat ein: " ) ;
2017-04-08 17:40:10 +02:00
do
2017-04-02 17:06:39 +02:00
{
2017-04-08 17:40:10 +02:00
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > month ;
2017-12-05 19:23:11 +01:00
if ( month > 12 | | month < 1 ) printf ( " ERROR: Der eingegebene Monat existiert nicht. Gib einen Monat zwischen 1 und 12 ein: " ) ;
else if ( day > daysInMonth [ month - 1 ] ) printf ( " ERROR: Der eingegebene Monat hat nicht genug Tage. Gib einen anderen Monat ein: " ) ;
2017-04-08 17:40:10 +02:00
} while ( month > 12 | | month < 1 | | day > daysInMonth [ month - 1 ] ) ;
2017-12-05 19:23:11 +01:00
printf ( " Gib das Jahr ein: " ) ;
2017-04-08 17:40:10 +02:00
do
2017-04-02 17:06:39 +02:00
{
2017-04-08 17:40:10 +02:00
getline ( std : : cin , input ) ;
std : : stringstream ( input ) > > year ;
2017-12-05 19:23:11 +01:00
if ( year < 0 ) printf ( " ERROR: Das Datum liegt vor dem 1. Januar 0. Gib ein Jahr nach dem 1. Januar 00 ein: " ) ;
else if ( day = = 29 & & month = = 2 & & ( year % 4 ! = 0 | | year % 100 = = 0 & & year % 400 ! = 0 ) ) printf ( " ERROR: Die bereits erfolgten Eingaben ben<65> tigen ein Schaltjahr. Gib ein anderes Jahr ein: " ) ;
2017-04-08 17:40:10 +02:00
} while ( year < 0 | | day = = 29 & & month = = 2 & & ( year % 4 ! = 0 | | year % 100 = = 0 & & year % 400 ! = 0 ) ) ;
2017-04-02 17:06:39 +02:00
2017-12-05 19:23:11 +01:00
printf ( " \n Der %i.%i.%i ist ein " , day , month , year ) ;
2017-04-02 17:06:39 +02:00
if ( month = = 1 | | month = = 2 ) year - = 1 ;
2017-04-02 17:42:04 +02:00
if ( month = = 1 ) month = 0 ;
else if ( month = = 8 ) month = 1 ;
else if ( month = = 2 | | month = = 6 ) month = 3 ;
else if ( month = = 9 | | month = = 12 ) month = 4 ;
else if ( month = = 4 | | month = = 7 ) month = 5 ;
else if ( month = = 10 ) month = 6 ;
else month = 2 ;
2017-04-02 17:06:39 +02:00
2017-04-08 17:40:10 +02:00
day = ( day + month + ( year % 100 ) + ( year % 100 / 4 ) + year / 400 - 2 * ( year / 100 ) ) % 7 ;
2017-04-02 17:06:39 +02:00
2017-04-08 17:40:10 +02:00
while ( day < 0 ) day + = 7 ;
2017-12-05 19:23:11 +01:00
if ( day = = 0 ) printf ( " Sonntag " ) ;
else if ( day = = 1 ) printf ( " Montag " ) ;
else if ( day = = 2 ) printf ( " Dienstag " ) ;
else if ( day = = 3 ) printf ( " Mittwoch " ) ;
else if ( day = = 4 ) printf ( " Donnerstag " ) ;
else if ( day = = 5 ) printf ( " Freitag " ) ;
else printf ( " Samstag " ) ;
2017-04-02 17:06:39 +02:00
getch ( ) ;
return ( 0 ) ;
}