Hi,
ich verstehe es nicht woran es liegt, aber bei mir funkioniert es mit dem Schaltjahr irgendwie nicht ganz
Habt ihr vielleicht eine Idee ?
Alles anzeigen
lg
ich verstehe es nicht woran es liegt, aber bei mir funkioniert es mit dem Schaltjahr irgendwie nicht ganz

Habt ihr vielleicht eine Idee ?
Quellcode
- // geburtstag.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <time.h>
- #include <windows.h>
- using namespace std;
- struct datum{
- int tag;
- int monat;
- int jahr;
- };
- int main(int argc, char* argv[])
- {
- datum werte;
- cout << "Bitte den Tag eingeben: ";
- cin >> werte.tag;
- cout << "Bitte den Monat eingeben: ";
- cin >> werte.monat;
- cout << "Bitte den Jahr eingeben: ";
- cin >> werte.jahr;
- // cout << "Sie sind am " << werte.tag << "." << werte.monat << "." << werte.jahr << " geboren.\n\n";
- //Zeit in Sekunden ab 1.1.1970
- time_t Zeitstempel;
- tm *nun;
- Zeitstempel = time(0);
- nun = localtime(&Zeitstempel);
- int feb = 0;
- if(werte.jahr%400==0 && werte.jahr% 4==0)
- {
- feb = 29;
- }
- if(werte.jahr%100==0)
- {
- feb = 28;
- }
- int nmonat = nun->tm_mon+1;
- int ntag = nun->tm_mday;
- int njahr = nun->tm_year+1900;
- // cout << ntag << '.' << nmonat << '.' << njahr << endl;
- if(werte.monat == 2 && werte.tag > feb || werte.jahr > njahr)
- {
- cout << "Falsche Geburtsdatum. Programm wird beendet.\n";
- system("pause");
- return 0;
- }
- else
- {
- if(nmonat >= werte.monat && ntag >= werte.tag)
- {
- werte.jahr = njahr - werte.jahr;
- }
- else
- {
- werte.jahr = njahr - werte.jahr - 1;
- }
- }
- cout << "\nSie sind " << werte.jahr << " Jahre " << werte.monat << " Monate alt";
- system("pause");
- return 0;
- }
lg