006
08.12.2004, 11:20 Uhr
virtual
Sexiest Bit alive (Operator)
|
Also für sowas double zunehmen ist schon mal eine ganz doll schlechte Idee. doubles kann man in der Regel nicht verläßlich auf Gleichheit prüfen.
ich würde es in etwa so lösen:
C++: |
int m_eingabe;
// Schleife, bis der User spurt do { std::cin>>m_eingabe; if (!std::cin || m_eingabe<1 || m_eingabe>3) { // Etwas anderes als 1-3 eingeben. std::cout<<"Zahlenbereich überschritten! Neue Eingabe!"<<std::endl;
// Spezielle vorkehrung erforderlich, wenn zB ein Buchstabe eingegeben wurde: if (!std::cin) { std::cin.clear(); std::cin.ignore(); } // Sicher stellen, daß Schleife nicht verlassen wird m_eingabe = -1; // oder "continue;" } } while(m_eingabe<1 || m_eingabe >3);
|
Alternativ:
C++: |
int m_eingabe;
// Schleife, bis der User spurt for(;;) { std::cin>>m_eingabe; if (std::cin && m_eingabe>=1 && m_eingabe<=3) { break; }
// Etwas anderes als 1-3 eingeben. std::cout<<"Zahlenbereich überschritten! Neue Eingabe!"<<std::endl;
// Spezielle vorkehrung erforderlich, wenn zB ein Buchstabe eingegeben wurde: if (!std::cin) { std::cin.clear(); std::cin.ignore(); } }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |