Treść zadania brzmiała: napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.
Początkowo założyłam, że zadanie dotyczy stworzenia programu, w którym pętla będzie powtarzała się do momentu wpisania właściwej liczby, np. z zadanego przedziału. Jednak zadanie dotyczyło zastosowania czyszczenia strumienia wejściowego. Ostatecznie połączyłam jedno i drugie w całość i wyszło mi to:
do
{
cout << "Podaj liczbe z przedzialu od 1 do 10: " << endl;
cin >> liczba;
cin.clear();
cin.ignore(numeric_limits <streamsize>::max(), '\n');
if (!(liczba >= 1 && liczba <= 10))
cout << "Blad. Podana liczba nie miesci sie w przedziale!" << endl << endl;
else cout << "Podana liczba: " << liczba << " jest poprawna." << endl;
} while (!(liczba >=1 && liczba <=10) || cin.fail());
Program działa, jednak chciałabym upewnić się, co do poprawności zastosowanego przeze mnie rozwiązania. Czy są jakieś zastrzeżenia, czy można zrobić coś lepiej? :)
Możliwe, że szukam dziury w całym i takie problemy, to tylko zawracanie gitary :) Jeżeli zaśmiecam forum, a pytania typu "czy możecie sprawdzić" są niepożądane, to z góry przepraszam :) Po prostu zmyjcie mi głowę.