folgender Auftrag:
mein Quelltext:
Alles anzeigen
Das Problem: Das Programm rechnet eben mit 1Jahr/12=Tage pro Monat. Und das ist ja nicht richtig, da die Monate ja unterschiedlich viele Tage haben...
Schreiben Sie ein Programm, welches die aktuelle Zeit, gegeben in Sekunden, in folgendes Format
konvertiert:
Tag.Monat.Jahr Stunden:Minuten:Sekunden
Das Programm soll dazu einen long-Wert ¨uber die Konsole einlesen. Unsere Zeitrechnung startet
am 1.1.1970 0:00:00 Uhr. Die aktuelle Zeit wird durch den long-Werte, der die Anzahl der
Sekunden nach dem 1.1.1970 0:00:00 Uhr angibt, beschrieben. Abweichungen durch Zeitzonen
sind zu ignorieren.
Hinweis: Beachten Sie die Schaltjahre nach dem gregorianischen Kalender.
mein Quelltext:
Quellcode
- #include <iostream>
- using namespace std;
- int main ()
- {
- long wert;
- long tag=0,monat=0,jahr=0,stunde=0,minute=0,sek=0,schaltjahr=0;
- // Schaltjahre = alle 4 Jahre, außer Jahr 100, dafür ist Jahr 400 ein Schaltjahr.
- // Da 100 Jahre einen zu großen (Sekunden)-Wert für den Datentyp long erzeugen,
- // wird die 100 und 400 Jahre-Regel nicht berücksichtigt.
- cout << endl;
- cout << "Dieses Programm errechnet aus ihren Angaben das aktuelle Datum inklusive Uhrzeit" << endl;
- cout << "Startzeitpunkt ist der 1.1.1970 0:00:00 Uhr" << endl;
- cout << endl;
- cout << "Geben Sie einen Wert ein (in Sekunden): ";
- cin >> wert;
- while ((wert/31536000)>=1) // solange wert groesser-gleich 1 Jahr...
- {
- wert=wert-31536000;
- jahr++;
- if (((jahr+1)%4)==0)
- {
- schaltjahr++;
- }
- }
- while ((wert/2628000)>=1) // solange wert groesser-gleich 1 Monat...
- {
- wert=wert-2628000;
- monat++;
- }
- while ((wert/86400)>=1) // solange wert groesser-gleich 1 Tag...
- {
- wert=wert-86400;
- tag++;
- if ((schaltjahr>=1)&&(monat>=2)&&(tag>=28))
- {
- tag++;
- }
- }
- while ((wert/3600)>=1) // solange wert groesser-gleich 1h...
- {
- wert=wert-3600;
- stunde++;
- }
- while ((wert/60)>=1) // solange wert groesser-gleich 1 Minute...
- {
- wert=wert-60;
- minute++;
- }
- while (wert>0)
- {
- wert=wert-1;
- sek++;
- }
- jahr=1970+jahr;
- monat=1+monat;
- tag=1+tag;
- stunde=0+stunde;
- minute=0+minute;
- sek=0+sek;
- if (stunde>12)
- { stunde=stunde-12; }
- cout << endl;
- if ((minute<10)&&(sek>=10))
- {
- cout << tag<<"."<<monat<<"."<<jahr<<" "<<stunde<<":0"<<minute<<":"<<sek<<" Uhr" << endl;
- }
- if ((sek<10)&&(minute>=10))
- {
- cout << tag<<"."<<monat<<"."<<jahr<<" "<<stunde<<":"<<minute<<":0"<<sek<<" Uhr" << endl;
- }
- if ((sek>=10)&&(minute>=10))
- {
- cout << tag<<"."<<monat<<"."<<jahr<<" "<<stunde<<":"<<minute<<":"<<sek<<" Uhr" << endl;
- }
- if ((sek<10)&&(minute<10))
- {
- cout << tag<<"."<<monat<<"."<<jahr<<" "<<stunde<<":0"<<minute<<":0"<<sek<<" Uhr" << endl;
- }
- cout << endl;
- system("pause");
- return 0;
Das Problem: Das Programm rechnet eben mit 1Jahr/12=Tage pro Monat. Und das ist ja nicht richtig, da die Monate ja unterschiedlich viele Tage haben...