Datum in C++ eingeben?

3 Antworten

Im Voraus muss ich sagen, dass ich einige Punkte nicht verstehe:

1) Wieso redest du im Fragetitel von C++, nutzt in deinem Code-Snippet aber eindeutig C? Im Folgenden werde ich mich aufgrund dieser Tatsache auf eine Lösung mit C fokussieren.

2) Wieso möchtest du das Datum in einen float-Datentyp speichern? Das erwartete Format passt doch gar nicht in den Typ. Es beinhaltetet mehrere Punkte (keine Kommas) an Stellen, die nicht einmal für eine Trennung, wie bei Tausenderstellen herhalten könnte.

Eine Aufteilung der einzelnen Angaben kannst du stattdessen bereits beim Einlesen der Eingabe via scanf erreichen:

int day, month, year;
scanf("%d.%d.%d", &day, &month, &year);

Folgend kannst du beginnen, eine Differenz zu bilden. Dazu wirst du die einzelnen Werte miteinander vergleichen müssen, um z.B. zu prüfen, welches Datum älter/neuer ist. Das ist etwas Arbeit, vielleicht tun sich da Skizzen gut. Das Schaltjahr solltest du in dieser Hinsicht nicht vergessen. Wie sich das berechnen lässt, wird schon in etlichen anderen Internetforen /-artikeln behandelt, sodass ich darauf nicht weiter eingehen möchte.

Eine Alternative dazu könnte die difftime-Funktion darstellen, die allerdings time_t-Typen verlangt, also Repräsentationen der Zeit in Sekunden. Schau dir dafür die tm-Struktur sowie Funktionen zur Konvertierung wie mktime an.

Teils auf in 3 Zahlen(Tag,Monat,Jahr)

BeastBeat 
Fragesteller
 22.09.2019, 12:53

Wie kann ich eine solche Zahl (10.10.2003) in 3 Zahlen aufteilen?

0
BeastBeat 
Fragesteller
 22.09.2019, 13:38
@Bitte01

Aber ich weiss ja nicht, wass eingegeben wird. Ich muss das zuerst mit printf / scanf_s abfragen und der benutzer gibt das datum im format tt.mm.jjjj ein.

0