This repository has been archived on 2024-09-24. You can view files and clone it, but cannot push or open issues or pull requests.
Schule/Kalender/Tage seit.cpp

48 lines
1.8 KiB
C++
Raw Normal View History

2017-04-02 17:06:39 +02:00
#include<iostream>
2017-04-08 17:13:09 +02:00
#include<conio.h>
2017-04-02 17:06:39 +02:00
#include<string>
#include<sstream>
int main()
{
2017-04-08 17:40:10 +02:00
//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;
2017-04-02 17:06:39 +02:00
std::cout << "Gib den Tag des Monats ein: ";
2017-04-08 17:13:09 +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-04-08 17:13:09 +02:00
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);
2017-04-02 17:06:39 +02:00
2017-04-08 17:13:09 +02:00
std::cout << "Gib den Monat ein: ";
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-04-08 17:13:09 +02:00
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: ";
}while(month>12 || month<1 || day>daysInMonth[month-1]);
2017-04-02 17:06:39 +02:00
std::cout << "Gib das Jahr ein: ";
2017-04-08 17:13:09 +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-04-08 17:13:09 +02:00
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<65>tigen ein Schaltjahr. Gib ein anderes Jahr ein: ";
}while(year<0 || day==29 && month == 2 && (year%4!=0 || year%100==0 && year%400!=0));
2017-04-02 17:06:39 +02:00
std::cout << "\nVom 1. Januar 0 bis zum " << day << "." << month << "." << year;
2017-04-08 17:40:10 +02:00
for(short idx = 0; idx<month-1; idx++) day += daysInMonth[idx];
2017-04-02 17:06:39 +02:00
std::cout << " sind " << year*365+year/4-year/100+year/400+day-1 <<" Tage vergangen.";
2017-04-08 17:13:09 +02:00
getch();
2017-04-02 17:06:39 +02:00
return(0);
}