Pętla ( do...while ) warunek kończący
Ostatnio zmodyfikowano 2014-02-21 14:05
Aran Temat założony przez niniejszego użytkownika |
Pętla ( do...while ) warunek kończący » 2014-02-19 19:14:06 Witam! Chcę aby mój program wypisujący wprowadzoną liczbę zakończył działanie gdy wprowadzoną liczbą będzie 0 lub 10 lub 100 lub 1000. Dodatkowo program musi być zabezpieczony przed wpisaniem błędnej liczby. #include<iostream> using namespace std; int main() { int A; bool sukces; do { cout << "Wprowadz liczbe: " << endl; cin >> A; sukces = cin.good(); cin.clear(); cin.sync(); if( sukces != 0 ) cout << "Wybrales liczbe: " << A << endl; else cout << "Bledna liczba " << endl; } while(( sukces != 1 ) ||( A != 0 ) ||( A != 10 ) ||( A != 100 ) ||( A != 1000 ) ); return 0; }
Naturalnie doszedłem do tego, że powyższy zapis określający warunek kończący pętle jest błędny natomiast nie wiem jak poprawnie można to ująć. |
|
libed |
» 2014-02-19 19:27:55 int val; bool endloop = false; do { std::cin.sync(); std::cin.clear(); std::cout << "Wprowadz liczbe: "; std::cin >> val; if(( val == 10 ) ||( val == 100 ) ||( val == 1000 ) ) endloop = true; } while( !endloop || !std::cin ); |
|
leon_w |
» 2014-02-19 21:12:11 @Aran, Twój sposób też by działał. Przeanalizuj warunek wykonywania pętli. 1. Pętla wykonuje się, dopóki wprowadzasz poprawną cyfrę lub 2.Liczba jest różna od zera lub 3 ... itd.
Praktycznie zawsze jakiś warunek będzie spełniony. Bo jeśli nie będzie różna od 10 to będzie różna od 100. |
|
Aran Temat założony przez niniejszego użytkownika |
» 2014-02-19 23:42:57 @leon_w mój sposób niestety nie działa. Inaczej bym nie potrzebował pomocy :) Pętla zakończy działanie gdy warunek pod "while()" zwróci wartość false. Dzięki @libed za ciekawe rozwiązanie. Sprawdzę jeszcze czy podany przez Ciebie sposób będę mógł też zastosować do bardziej złożonych przykładów jak np zabezpieczenie kalkulatora z zadania domowego z rozdziału 15 i jak nie będzie problemów zamknę temat. |
|
leon_w |
» 2014-02-20 17:34:33 Zadziała, jeśli zamiast "lub" użyjesz "i". while(( sukces != 1 ) ||( A != 0 ) &&( A != 10 ) &&( A != 100 ) &&( A != 1000 ) ); Nie wiem czy określenie: gdy warunek pod "while()" zwróci wartość false |
jest poprawne. Pętla wykonuje się tak długo, dopóki warunek jest spełniony. |
|
jmaciejjjj7 |
» 2014-02-21 14:05:48 Użyj zapisu while( !(( A == 0 ) ||( A == 10 ) ||( A == 100 ) ||( itd.) ) ) |
|
« 1 » |