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

Zadanie 1 z rozdziału 15 (pętla do while) problem ze zmienną bool

Ostatnio zmodyfikowano 2022-06-03 07:01
Autor Wiadomość
piratek
Temat założony przez niniejszego użytkownika
Zadanie 1 z rozdziału 15 (pętla do while) problem ze zmienną bool
» 2022-06-03 04:13:29
Witam serdecznie. Po dłuższych bojach udało mi się wygrać z tym zadaniem, ale jeden problem nie daje mi spokoju. Mianowicie czemu poniższy kod nie działał prawidłowo:
C/C++
#include <iostream>
using namespace std;

int main()
{
   
int liczba;
   
bool blad = cin.fail();
   
   
do
   
{
       
cout << "Podaj liczbe: ";
       
cin >> liczba;
       
cout << "Czy wystapil blad? " << cin.fail(); //linika kodu tymczasowa do zweryfikowania bledu
       
cin.clear();
       
cin.ignore( 1000, '\n' );
   
} while( blad == 1 );
   
}

A mój obecny: (użyłem komentarza, by podkreślić gdzie są zmiany)
C/C++
#include <iostream>
using namespace std;

int main()
{
   
int liczba;
   
   
bool blad; // Pierwsza zmiana
   
   
do
   
{
       
cout << "Podaj liczbe: ";
       
cin >> liczba;
       
blad = cin.fail(); // Druga zmiana
       
cout << "Czy wystapil blad? " << cin.fail(); //linika kodu tymczasowa do zweryfikowania bledu
       
cin.clear();
       
cin.ignore( 1000, '\n' );
   
} while( blad == 1 );
   
}
Nie do końca rozumiem, dlaczego zmienna bool wcześniej nie działała prawidłowo. Dlaczego muszę użyć
blad = cin.fail();
 dopiero w pętli? Teoretycznie żaden błąd przy kompilacji mi nie wyskoczył, ale w zależności od liczby, którą bym wpisał w miejsce
while( blad == 1 )
, to niezależnie od wprowadzonej liczby czy tekstu pętla albo zawsze się wkonywała albo nigdy.
P-179487
pekfos
» 2022-06-03 07:01:35
W pierwszej wersji sprawdzasz błędy tylko raz i używasz wyniku sprawdzenia przez cały program.
P-179488
« 1 »
  Strona 1 z 1