// Uppgift: Läs in ett heltal i intervallet [1, 7]. Misslyckas aldrig! (?) // Nyckelord: formaterad inmatning, felhantering, #include #include using namespace std; int main() { int x; bool stupid_user = true; bool eof = false; while ( stupid_user ) { cout << "Mata in ett tal i intervallet [1, 7]: "; if (cin >> x) { if (1 <= x && x <= 7) { cout << "Bra! Du lyckades!" << endl; stupid_user = false; } else { cerr << "Tyvärr, du får försöka igen." << endl; } } else { if ( cin.bad() ) { cerr << "Nu blev det väldigt fel, hej då." << endl; return 1; } if ( cin.eof() ) { if (eof) { cerr << "Nu tog indata slut igen, ger upp." << endl; return 1; } else { eof = true; cerr << "Nu tog indata slut, försöker nollställa." << endl; cin.clear(); } } if ( cin.fail() ) { // eller om ett alldeles för stort tal matades in (> 2 000 000 000) cerr << "Nu matade du inte in ett tal, tömmer raden." << endl; cin.clear(); cin.ignore(numeric_limits::max(), '\n'); } } } return 0; }