Pętla do ... while (praca domowa)
Ostatnio zmodyfikowano 2015-11-11 22:25
carlosmay |
» 2015-11-11 20:47:53 Rozwiązanie problemu już padło. Przeczytaj jeszcze raz post i zastosuj podpowiedzi. |
|
Master_Yoga |
» 2015-11-11 20:51:09 Masz racje carlosmay, ale to dobry nawyk i zapewne w przyszłości zaoszczędzi mi trochę nerwów - zgaduję, że wiesz o co chodzi :)
Spróbuj rozwiązać problem sam, jeżeli sobie nie poradzisz to proszę bardzo: http://wklej.org/id/1839722/ |
|
carlosmay |
» 2015-11-11 20:56:42 W nowym standardzie usunięto możliwość czyszczenia strumienia metodą .sync() |
|
Bidi Temat założony przez niniejszego użytkownika |
» 2015-11-11 21:06:38 #include <iostream> using namespace std;
int main() { float a; bool b; cout << "Podaj liczbe = "; cin >> a; b = cin.good(); cin.clear(); cin.sync(); if( b == 0 ) { do { cout << "Podaj liczbe = "; cin >> a; b = cin.good(); cin.clear(); cin.sync(); } while( b == 0 ); cout << "Podales liczbe = " << a; } return 0; } dobra rozumiem czemu po if ma być (b == 0) ale nie rozumiem dlaczego po while ma być (b == 0) jeśli while to warunek kończący. Czyli żeby ta pętla(while (b == 0)) się skończyła b musi wynosić 0 czyli musimy źle dane wpisać, a pętla się kończy gdy zrobimy to dobrze i b wyniesie 1 to bez sensu. I jeszcze jedno gdzie mam wpisać cout << "Podales liczbe = " << a; żeby po pierwszym poprawnym wpisaniu liczby pokazało mi jaką wpisałem. |
|
carlosmay |
» 2015-11-11 21:12:19 dobra rozumiem czemu po if ma być (b == 0) ale nie rozumiem dlaczego po while ma być (b == 0) |
wpisanie literki, czyli nieprawidłowych danych powoduje uruchomienie if'a i pętli. Pętla będzie kręcić się póki wpisujesz coś innego niż oczekuje tego program. if( b == false ) } while( b == false );
jest czytelniejsze |
|
Master_Yoga |
» 2015-11-11 21:14:49 printowanie do konsolki powinieneś dać między return a końcem pętli. Wartość liczbowa false to 0, a true to 1, także jak kto woli. |
|
carlosmay |
» 2015-11-11 21:19:38 printowanie do konsolki powinieneś dać między return a końcem pętli. | } while( b == 0 );
cout << "Podales liczbe = " << a; }
return 0;
przecież jest. Daj za klamrą if'a Wartość liczbowa false to 0, a true to 1, także jak kto woli. |
Używanie true i false od razu wskazuje na typ bool, a liczby 0 i 1 nie. Trzeba wyszukać w kodzie deklaracji zmiennej. A jeszcze lepiej napisać tak |
|
Bidi Temat założony przez niniejszego użytkownika |
» 2015-11-11 21:23:08 #include <iostream> using namespace std;
int main() { float a; bool b; cout << "Podaj liczbe = "; cin >> a; b = cin.good(); cin.clear(); cin.sync(); if( b == 0 ) { do { cout << "Podaj liczbe = "; cin >> a; b = cin.good(); cin.clear(); cin.sync(); } while( b == 0 ); cout << "Podales liczbe = " << a; } cout << "Podales liczbe = " << a; return 0; }
tak miałem dopisać? bo jeśli tak to dalej jest coś nie tak bo teraz niby jest to co chciałem czyli po wpisaniu za pierwszym razem dobrze danych pokazuje mi potem jaką liczbe wpisałem ale za to kiedy wpisze na początku źle dane potem dobrze wyskakuje mi dwa razy jaką podałem liczbe. A co do pętli to ja rozumiem że wpisanie źle danych uruchamia pętlę. Nie rozumiem Dlaczego pętlę kończy b = 0 jeśli żeby otrzymać b = 0 musimy wpisać błędnie dane. |
|
1 « 2 » 3 |