Wieso wird schlieffe net verlassen??
-
hi,
bool TerminEintrag = true; while(TerminEintrag) { int option_1; cout << " Willkommen in ihrem persoenlichen Terminkalender. Moechten Sie einen neuen\n" << " Termin verfassen (Tipp #1) oder wollen Sie ihre bislang eingetragenen\n" << " Termine einsehen (Tipp #2)!\n\n"; cout << " >> #"; cin >> option_1; while(true) { if(cin.fail()) { cout << "\n Bitte nutzen Sie die Optionen: #1 - Termin verfassen / #2 - Termine einsehen!\n"; cin.clear(); cin.sync(); continue; } if(option_1==1) { TerminEintrag = true; break; } if(option_1==2) { TerminEintrag = false; break; } cout << "\n Bitte nutzen Sie die Optionen: #1 - Termin verfassen / #2 - Termine einsehen!\n"; } //--- TAG ---------------------------------------------------------------------- while(true) { cout << "\n Geben Sie hier ihren Termin ein: Tag >> "; cin >> ptag; if(cin.fail()) { cout << " Bitte geben Sie eine Zahl von 1 bis 31 an!\n\n"; cin.clear(); cin.sync(); continue; } if(0 < ptag && ptag < 32) { break; } cout << "\n"; cout << " Fehler: \"" << ptag <<".\" ist kein Monatstag!\n\n"; } //--- MONAT -------------------------------------------------------------------- cout << "================================================================================"; while(true) { cout << "\n Geben Sie hier ihren Termin ein: Monat >> "; cin >> pmonat; if(cin.fail()) { cout << " Bitte geben Sie eine Zahl von 1 bis 12 an!\n\n"; cin.clear(); cin.sync(); continue; } if(0 < pmonat && pmonat < 13) { break; } cout << "\n"; cout << " Fehler: \"" << pmonat <<".\" ist kein Monat!\n\n"; } //--- JAHR --------------------------------------------------------------------- cout << "================================================================================"; while(true) { cout << "\n Geben Sie hier ihren Termin ein: Jahr >> "; cin >> pjahr; if(cin.fail()) { cout << "Termin nur bis 2100 speicherbar!"; cin.clear(); cin.sync(); continue; } if(heute->tm_year+1899 < pjahr && pjahr < 2101) { break; } cout << "\n"; cout << " Fehler: \"" << pjahr <<".\" ist nicht im Kalender speicherbar (max. bis Jahr 2100)!\n\n"; } //--- AUSGABE ------------------------------------------------------------------ Termin aktuel; aktuel.SetTag(ptag); aktuel.SetMonat(pmonat); aktuel.SetJahr(pjahr); aktuel.Info(); aktuel.GetTermin(); int option_2; cout << "\n Wollen Sie einen weiteren Termin angeben ?\n"; cout << " JA - #1 / NEIN - #2 "; cout << " >> #"; cin >> option_2; while(true) { if(cin.fail()) { cout << " Bitte die jeweilige Option mit der Ziffer 1 oder 2 bestaetigen!\n"; cin.clear(); cin.sync(); continue; } if(option_2==1) { TerminEintrag = true; break; } else { TerminEintrag = false; break; } cout << " Bitte die jeweilige Option mit der Ziffer 1 oder 2 bestaetigen!\n "; } } ....
wieso verlaesst er die schleife nicht und macht mit "..." weiter wenn ich ihn oben bei der abfrage "termin verfassen oder alle lesen", wenn ich 2 fuer alle lesen tippe ... geht er trotzdem zum einlesen des neuen termins... wieso? stimmt die while verwendung nicht?
-
Na er geht doch aus deiner while(true) Schleife raus. Die äußere wile(TerminEintrag) Schleife verlässt er natürlich nicht. Pro break wird auch nur eine Schleife verlassen.
-
Ich würd' die schleifen nicht versuchen mit break zu verlassen, sondern etwas in der Art:
bool do_exit = false; int choice; do{ cout << "Menu:" << endl; cout << "[1] One" << endl; cout << "[2] Two" << endl; cout << "[3] Exit" << endl; choice = cin.get( ); if( cin.fail( ) ) { cin.clear( ); cin.ignore( cin.rdbuf( )->in_avail( ) ); choice = 0; } switch( choice ) { case 1: cout << "--> One!" << endl; break; case 2: cout << "--> One!" << endl; break; case 3: do_exit = true; break; default: cout << "Invalid input!" << endl; } } while( !do_exit );
Greetz, Swordfish
-
Ich würde als allererstes mal diese Blöcke die mir da so komisch fast-identisch erscheinen in eine Funktion packen.