Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 15]pętla do while

Ostatnio zmodyfikowano 2014-03-22 00:06
Autor Wiadomość
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?

C/C++
#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;
}
P-106924
maly
» 2014-03-21 17:07:20
P-106925
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.
P-106927
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)
P-106934
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.
P-106937
leon_w
» 2014-03-21 18:43:53
We while zmień na false.
P-106938
buena
Temat założony przez niniejszego użytkownika
» 2014-03-22 00:06:01
Teraz działa, dziękuję za pomoc.
P-106972
« 1 »
  Strona 1 z 1