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

[Rozdzial 16] Problem z zabezpieczeniem przed wpisaniem znaków innych niż cyfry.

Ostatnio zmodyfikowano 2015-05-11 23:09
Autor Wiadomość
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.
C/C++
#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!
P-132084
Kaikso
» 2015-05-11 21:43:25
Zrób tak:

C/C++
#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(); // Sprawdź czy podano liczbę.
        cin.clear();
        cin.sync();
       
        if( !is_good ) // Jeśli to nie była liczba ...
        {
            cout << "To nie jest liczba!\n";
            continue; // Zignoruj tą próbę!
        }
       
        ++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;
}
P-132095
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.
P-132105
JMII89
» 2015-05-11 23:09:00
Zaczyna wykonywać pętlę od nowa.
P-132110
« 1 »
  Strona 1 z 1