S
Hi Lisa,
sorry, aber Dein Code ist grauenhaft !
Mal ein paar Hinweise:
main() muss int zurückgeben, um standardkonform zu sein - selbst wenn Anderes zufällig geht, sollte man es sich gleich richtig angewöhnen.
printf/scanf() sind C-Altlasten, für die es in ++ die viel besseren (komfortableren, sichereren, ...) Varianten cout/cin und #include<iostream> (statt stdio.h) gibt
Endlose if-else-if-Ketten sind in 99% der Fälle überflüssig und führen in 102% der Fälle zu unlesbarem/unwartbarem Code.
Da int's sowieso keine Nachkommastellen ahben können, braucht man ach keine "wegzuschneiden".
Wenn Du den Eingabewert durch 10000 teilst, sind damit die Informationen der letzten 4 Stellen (Monat, Tag) einfach weg und kommen auch nicht wieder.
Offensichtlich willst Du Zahlen Zeichenketten ("Strings") zuordnen (1 -> "Januar", 2 -> ...) Für sowas bieten sich "Container" an. Wenn es so einfach ist, wie hier (simples 1:1-Mapping von 1-12 auf "Januar"-"Dezember"), reichen vector oder gar ein Array aus. Die Position im Container entspricht dann Deiner Zahl.
Dasselbe geht für die "maximale Anzahl von Monatstagen": Array.
Mal ein kleines Beispiel:
string const MonatsListe[] = { "Januar", "Februar", "Maerz" };
unsigned int const maxTageInMonat[] = { 31, 28, 31 };
int main() {
unsigned int Eingabewert, Tag, Monat,Jahr;
bool gueltig = false;
while(!gueltig) {
cout << "Bitte geben Sie das Datum in der Form TTMMJJ ein!\n";
if(cin>>Eingabewert && Eingabewert > 0) {
Jahr = Eingabewert % 100;
Eingabewert /= 100;
Monat = Eingabewert;
Tag = Eingabewert / 10;
gueltig = Monat > 0 && Monat <= 3 && Tag <= maxTageInMonat[Monat-1]; // -1, weil bei Array ab 0 gezählt wird
}
}
cout << Tag << "." << MonatsListe[Monat-1] << " "<< Jahr << "\n";
return 0;
}
So - das solltest Du noch korrigieren auf/erweitern um
eine korrekte Berechnung von Tag/Monat/Jahr (habe ein paar Fehler eingebaut ;))
Prüfung, ob der Eingabewert genug (und nicht zuviel ?) Stellen hat,
eine Abbruchbedingung (öfter als 3mal braucht niemand zu probieren; Man kann jede Funktion - auch main() - mittels return verlassen)
Schaltjahresprüfung für den Februar (vllt. eine Funktion ?)
...
Gruß,
Simon2.