From 439c84c07956a7cbd0dc38c9c9c3511a1394f460 Mon Sep 17 00:00:00 2001 From: Leaced Date: Sat, 8 Apr 2017 17:40:10 +0200 Subject: [PATCH] kleine Optimierungen --- Kalender/Tage seit.cpp | 24 ++++++------ Kalender/weekday.cpp | 85 ++++++++++++++++-------------------------- 2 files changed, 43 insertions(+), 66 deletions(-) diff --git a/Kalender/Tage seit.cpp b/Kalender/Tage seit.cpp index d87b7d1..7973248 100644 --- a/Kalender/Tage seit.cpp +++ b/Kalender/Tage seit.cpp @@ -4,23 +4,24 @@ #include int main() { - std::string stringInput; - unsigned long long day, month, year; - short daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}; + //Aufgabe: Kombiniere dieses Programm mit dem jeweils anderen im Kalender Ordner. + + std::string input; + unsigned short daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}, day = 0, month = 0, year = 0; std::cout << "Gib den Tag des Monats ein: "; do { - getline(std::cin, stringInput); - std::stringstream(stringInput) >> day; + getline(std::cin, input); + std::stringstream(input) >> day; if(day>31 || day<1) std::cout << "ERROR: Der eingegebene Tag existiert nicht. Gib einen Tag zwischen 1 und 31 ein: "; }while(day>31 || day<1); std::cout << "Gib den Monat ein: "; do { - getline(std::cin, stringInput); - std::stringstream(stringInput) >> month; + getline(std::cin, input); + std::stringstream(input) >> month; if(day==29 && month==2) daysInMonth[1]++; else if(month>12 || month<1) std::cout << "ERROR: Der eingegebene Monat existiert nicht. Gib einen Monat zwischen 1 und 12 ein: "; else if(day>daysInMonth[month-1]) std::cout << "ERROR: Der eingegebene Monat hat nicht genug Tage. Gib einen anderen Monat ein: "; @@ -29,18 +30,15 @@ int main() std::cout << "Gib das Jahr ein: "; do { - getline(std::cin, stringInput); - std::stringstream(stringInput) >> year; + getline(std::cin, input); + std::stringstream(input) >> year; if(year<0) std::cout << "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)) std::cout << "ERROR: Die bereits erfolgten Eingaben benötigen ein Schaltjahr. Gib ein anderes Jahr ein: "; }while(year<0 || day==29 && month == 2 && (year%4!=0 || year%100==0 && year%400!=0)); std::cout << "\nVom 1. Januar 0 bis zum " << day << "." << month << "." << year; - for(short idx = 0; idx> day; - - if(day==0 || day>31) + std::cout << "Gib den Tag des Monats ein: "; + do { - std::cout << "\nERROR: Das eingegebene Tagesdatum existiert nicht."; - getch(); - return(1); - } + getline(std::cin, input); + std::stringstream(input) >> day; + if(day>31 || day<1) std::cout << "ERROR: Der eingegebene Tag existiert nicht. Gib einen Tag zwischen 1 und 31 ein: "; + }while(day>31 || day<1); - std::cout << "Gib den Monat ein: "; - getline(std::cin, input); - std::stringstream(input) >> month; - - if(daysInMonth[month-1]> month; + if(month>12 || month<1) std::cout << "ERROR: Der eingegebene Monat existiert nicht. Gib einen Monat zwischen 1 und 12 ein: "; + else if(day>daysInMonth[month-1]) std::cout << "ERROR: Der eingegebene Monat hat nicht genug Tage. Gib einen anderen Monat ein: "; + }while(month>12 || month<1 || day>daysInMonth[month-1]); - if(month>12 || month==0) + std::cout << "Gib das Jahr ein: "; + do { - std::cout << "\nERROR: Der eingegebene Tag existiert nicht."; - getch(); - return(1); - } + getline(std::cin, input); + std::stringstream(input) >> year; + if(year<0) std::cout << "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)) std::cout << "ERROR: Die bereits erfolgten Eingaben benötigen ein Schaltjahr. Gib ein anderes Jahr ein: "; + }while(year<0 || day==29 && month == 2 && (year%4!=0 || year%100==0 && year%400!=0)); - std::cout << "Gib das jahr ein: "; - getline(std::cin, input); - std::stringstream(input) >> year; - - if(year>10000 || year<0) - { - std::cout << "\nERROR: Im eingegeben Jahr lässt sich der Wochentag nicht ermitteln."; - getch(); - return(1); - } - - if(day==29 && month==2 && (year%4!=0 || year%100==0)) - { - std::cout << "\nERROR: Die Eingaben ben\x94tigen ein Schaltjahr."; - getch(); - return(1); - } - - std::cout << "\nDer " << day << "." << month << "." << year << " war ein "; + std::cout << "\nDer " << day << "." << month << "." << year << " ist ein "; if(month==1 || month==2) year -=1; - if(month==1) month = 0; else if(month==8) month = 1; else if(month==2 || month==6) month = 3; @@ -67,16 +47,15 @@ int main() else if(month == 10) month = 6; else month = 2; - weekday = (day+month+(year%100)+(year%100/4)+year/400-2*(year/100))%7; + day = (day+month+(year%100)+(year%100/4)+year/400-2*(year/100))%7; - while(weekday<0) weekday += 7; - - if(weekday==0) std::cout << "Sonntag"; - else if(weekday==1) std::cout << "Montag"; - else if(weekday==2) std::cout << "Dienstag"; - else if(weekday==3) std::cout << "Mittwoch"; - else if(weekday==4) std::cout << "Donnerstag"; - else if(weekday==5) std::cout << "Freitag"; + while(day<0) day += 7; + if(day==0) std::cout << "Sonntag"; + else if(day==1) std::cout << "Montag"; + else if(day==2) std::cout << "Dienstag"; + else if(day==3) std::cout << "Mittwoch"; + else if(day==4) std::cout << "Donnerstag"; + else if(day==5) std::cout << "Freitag"; else std::cout << "Samstag"; getch();