Pętla do ... while (zad.dom.)
Ostatnio zmodyfikowano 2015-08-10 22:07
vegas793 Temat założony przez niniejszego użytkownika |
Pętla do ... while (zad.dom.) » 2015-08-10 13:15:41 Witam, własnie takie zad. domowe:
"Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. 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. "
Oto mój program: #include <iostream> int main() { int licz;
std::cout << "Podaj liczbe: "; std::cin >> licz;
do { if( licz == 4 ) std::cout << "Liczba prawidlowa" << std::endl;
else std::cout << "Blad"; } while ( licz > 0);
return 0; }
Co musze zrobić żeby było dobrze? Ponieważ teraz efekt jest taki, że jak wpisze inną liczbe niz 4 to w konsoli caly czas wyświetlany jest napis "Blad" a jak wpisze 4 to non stop jest napis "Liczba prawidlowa" |
|
JMII89 |
» 2015-08-10 13:31:43 Ten program jest bez sensu i wgl nie spełnia warunków zadania.
W pętli masz wczytywać liczbę do póki wczytywanie do danego typu danych się nie powiodło . Możesz zrobić zmienną bool i przed czyszczeniem strumienia (std::cin.clear(),std::cin.sync()) i przypisać jej wynik ostatniej operacji (std::cin.good()) ale także możesz próbować wczytać liczbę dopóki std::cin.good() zwraca 0 (false). A jeśli wczytywanie się powiodło to wypisać liczbę. |
|
Szymon2727 |
» 2015-08-10 21:28:30 Nie rozumiesz. Program ma się znowu zapytać, gdy podasz zły wynik, a tutaj kończy pracę + pętla powtarza się w nieskończoność gdy podasz liczbę poniżej zero. Musisz jednak zabezpieczyć program przed podaniem char np. a - w zadaniu nie chodzi o to, by podać dokładną liczbę (chyba, że źle pamiętam, ale to raczej niemożliwe, bo przecież jest to podane w przykładach, a ten rozdział jest niewątpliwe jednym z najtrudniejszych, ale robi spory przełom). Tutaj z pomocą przychodzi pierwszy rozdział i czyszczenie bufora, a warunkiem w pętli powinna być zmienna bool. |
|
JMII89 |
» 2015-08-10 22:07:34 @Up Nie musi być bool... Obejdzie się bez tego. |
|
« 1 » |