[Lekcja 15]pętla do while
Ostatnio zmodyfikowano 2014-03-22 00:06
buena Temat założony przez niniejszego użytkownika |
[Lekcja 15]pętla do while » 2014-03-21 16:59:50 Witam, nie znalazłam na forum wątku na temat tego zadania. 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. Program wykonuje się ale cały czas nie działa mi pętla do...while (chciałam zrobić tak, że jeśli wartość wynosi 0, pętla powtarza się, aż do momentu kiedy wartość będzie prawdziwa, to znaczy kiedy podamy liczbę). Program zawsze wykonuje się raz niezależnie od tego jaki wpiszę warunek kończący. Czy błąd jest w kodzie, czy należy to zrobić innym sposobem? #include <iostream> using namespace std;
int main() { float a; bool spr; int wartosc; do { cout << "Podaj liczbe: " << endl; cin >> a; spr = cin.good(); wartosc = spr; cin.clear(); cin.sync(); switch( spr ) { case 0: cout << "to nie jest liczba" << endl; break; case 1: cout << "podales liczbe:" << a << endl; break; } } while( spr = 1 ); return 0; }
|
|
maly |
» 2014-03-21 17:07:20 |
|
Monika90 |
» 2014-03-21 17:18:28 zawsze wykonuje się raz niezależnie od tego jaki wpiszę warunek kończący |
niemożliwe, bo ten warunek spr = 1 jest zawsze prawdziwy (= to operator przypisania, a nie porównania). Daj tam while( !spr ); i w ogóle nie porównuj wartości typu bool z liczbami 0 i 1. Bool nie przyjmuje wartości 0 i 1, ale true i false i w warunkach można używać bool bezposrednio, tzn. == nie jest potrzebne. |
|
buena Temat założony przez niniejszego użytkownika |
» 2014-03-21 18:34:04 Poprawiłam warunki: if (wartosc==true) i w while(spr==true), ale nic się nie zmieniło (w while wpisałam warunek spr==true bo zamysł był taki że pętla wykonuje się cały czas jak nie poda się poprawnej liczby, a wyjście z pętli nastąpi kiedy podamy poprawną wartość, czyli kiedy będzie true) |
|
Monika90 |
» 2014-03-21 18:43:06 We while nie podaje się warunku zakończenia, tylko warunek potwórzenia. Jeżeli warunek jest spełniony, to pętla się powtarza, jeżeli nie jest spełniony, to następuje wyjście z pętli. |
|
leon_w |
» 2014-03-21 18:43:53 We while zmień na false. |
|
buena Temat założony przez niniejszego użytkownika |
» 2014-03-22 00:06:01 Teraz działa, dziękuję za pomoc. |
|
« 1 » |