Datum in C++ eingeben?
Hallo!
Ich muss zwei Daten im Format DD.MM.JJJJ eingeben.
Also zum Beispiel
10.10.2019
und
11.10.2019
und das Programm soll berechnen, wie viele Tage zwischen den Daten sind.
Also = 1
Kann mir jemand einen Tipp geben, wie ich mit dem Datum arbeiten soll, denn ich verstehe nicht ganz, wie es funktionieren soll, wenn im Datum ja 2 Kommas sind.
Und wie soll ich dann die beiden Daten vergleichen und herausfinden, wie hoch die Differenz an Tagen ist.
int main() {
float datum1;
int datum2;
int jahr1;
int jahr2;
printf("Geben Sie bitte das erste Datum ein: ");
scanf_s("%f", &datum1);
// prdoublef("Geben Sie bitte das zweite Datum ein: ");
// scanf_s("%d", &datum2);
float resultat = datum1 * 100000;
printf("Das Resultat ist %f", resultat);
}
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.
gebe es als Text ( String ) ein den du dann zerschnippelst sprich Tag Monat Jahr rausschneidest und dann in Zahlen umwandelst mit denen du dann weiter machst
Teils auf in 3 Zahlen(Tag,Monat,Jahr)
Wie kann ich eine solche Zahl (10.10.2003) in 3 Zahlen aufteilen?
Wie kann ich strings zerteilen?