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

Problem z pętlą

Ostatnio zmodyfikowano 2014-03-19 20:45
Autor Wiadomość
tabupl
Temat założony przez niniejszego użytkownika
Problem z pętlą
» 2014-03-19 20:15:10
Witam, właśnie chciałem wykonać zadanie z 1. lekcji na 2. poziomie, jednak kiedy w programie wpisuję liczbę niepoprawną, zapętla się to w ten sposób, że w nieskończoność wypisują się na ekranie polecenia "wpisz liczbe: ". Dlaczego tak się dzieje? (kiedy wpisuję liczbę poprawną wszystko działa jak należy, pętla się nie uruchamia po raz kolejny). Oto kod:

C/C++
#include <iostream>

int main()
{
    int A;
   
    do
    {
        std::cout << "Podaj liczbe: ";
        std::cin >> A;
        std::cin.fail();
    } while( std::cin.fail() );
   
    std::cout << A;
    return 0;
}
P-106806
OczkoSX
» 2014-03-19 20:18:16
Po co piszesz dwa razy fail? Wystarczy jedno przy warunku pętli.
P-106807
tabupl
Temat założony przez niniejszego użytkownika
» 2014-03-19 20:19:58
Niestety skasowanie "górnego" cin.fail() nie pomogło...
P-106808
kamilcv
» 2014-03-19 20:23:13
s spróbuj napisać taki warunek:
while( A != std::cin.fail() );

albo taki:
while( A == std::cin.fail() );
już nie pamiętam za dobrze
P-106809
tabupl
Temat założony przez niniejszego użytkownika
» 2014-03-19 20:25:02
Dalej bez zmian niestety.
P-106810
kamilcv
» 2014-03-19 20:25:59
a ten drugi co modyfikowałem?
P-106811
tabupl
Temat założony przez niniejszego użytkownika
» 2014-03-19 20:27:49
Spróbowałem zanim zobaczyłem. Wtedy wcale się pętla nie odpala, nieważne czy liczba jest poprawna, czy nie.
P-106812
leon_w
» 2014-03-19 20:37:06
Nie czyścisz flagi błędów ani bufora. Poczytaj o cin.sync() i cin.clear()
P-106813
« 1 » 2
  Strona 1 z 2 Następna strona