[Rozdzial 16] Problem z zabezpieczeniem przed wpisaniem znaków innych niż cyfry.
Ostatnio zmodyfikowano 2015-05-11 23:09
czesyk Temat założony przez niniejszego użytkownika |
[Rozdzial 16] Problem z zabezpieczeniem przed wpisaniem znaków innych niż cyfry. » 2015-05-11 17:25:18 Witam! Jest to zadanie z rozdziału 16. Wszystko działa poprawnie tylko, gdy wpisuje, np. literę to program krzyczy, że liczba jest za duża/mała - a przecież to litera. Patrzyłem do rozdziału o obsłudze strumienia wejściowego, lecz wszystko czego spróbowałem nie dało rezultatu. #include <iostream> #include <cstdlib> #include <time.h> using namespace std; int main() { int ilosc_prob = 0; int liczba; int zgaduj; srand( time( NULL ) ); liczba =( rand() % 1000 ) + 1; do { cout << "Wpisz liczbe: "; cin >> zgaduj; cin.clear(); cin.sync(); ++ilosc_prob; if( zgaduj > liczba ) cout << "Liczba jest za duza!\n"; if( zgaduj < liczba ) cout << "Liczba jest za mala! \n"; if( zgaduj == liczba ) { cout << "Brawo! Zgadles!\nTa liczba to: " << liczba << "\n"; cout << "Wykonales " << ilosc_prob << " prob!" << endl; } } while( liczba != zgaduj ); return 0; }
Proszę o pomoc. Pozdrawiam! |
|
Kaikso |
» 2015-05-11 21:43:25 Zrób tak: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; int main() { int ilosc_prob = 0; int liczba; int zgaduj; srand( time( NULL ) ); liczba =( rand() % 1000 ) + 1; do { cout << "Wpisz liczbe: "; cin >> zgaduj; bool is_good = cin.good(); cin.clear(); cin.sync(); if( !is_good ) { cout << "To nie jest liczba!\n"; continue; } ++ilosc_prob; if( zgaduj > liczba ) cout << "Liczba jest za duza!\n"; if( zgaduj < liczba ) cout << "Liczba jest za mala! \n"; if( zgaduj == liczba ) { cout << "Brawo! Zgadles!\nTa liczba to: " << liczba << "\n"; cout << "Wykonales " << ilosc_prob << " prob!" << endl; } } while( liczba != zgaduj ); return 0; }
|
|
czesyk Temat założony przez niniejszego użytkownika |
» 2015-05-11 22:24:40 continue; <-- jak to działa? Gdy to usunę, to pojawia się tekst, że wprowadzoną wartością nie jest liczba oraz że liczba jest mała/duża. A gdy dopiszę z powrotem, to działa normalnie. |
|
JMII89 |
» 2015-05-11 23:09:00 Zaczyna wykonywać pętlę od nowa. |
|
« 1 » |