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

Niepożądane działanie programu, po wyczyszczeniu strumienia wejściowego

Ostatnio zmodyfikowano 2013-12-15 18:05
Autor Wiadomość
Lilsem
Temat założony przez niniejszego użytkownika
Niepożądane działanie programu, po wyczyszczeniu strumienia wejściowego
» 2013-12-10 23:10:22
C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    srand( time( NULL ) );
   
    int liczba;
    int liczba_losowa =( rand() % 1000 ) + 0;
    int proby = 0;
    liczba = liczba_losowa;
    do
    {
        std::cin.clear();
        std::cin.sync();
       
        if( liczba > liczba_losowa )
             cout << "Nieudane trafienie. Liczba ktorej szukasz jest mniejsza" << endl;
       
        if( liczba < liczba_losowa )
             cout << "Nieudane trafienie. Liczba ktorej szukasz jest wieksza" << endl;
       
        cout << "Podaj liczbe: ";
        cin >> liczba;
        proby++;
       
        if( std::cin.fail() )
        {
            cout << "Niepoprawna wartosc. Wprowadz pownownie";
            proby--;
        }
    } while( liczba_losowa != liczba );
   
    cout << "Brawo, zgadles liczbe!" << endl << "Proby odgadniecia: " << proby << endl;
    cout << "Nacisnij dowolny przycisk, aby zakonczyc program";
   
    getch();
    return 0;
}
Dodałem do kodu linijki std::cin.clear(); i .sync i po wpisaniu błędnych danych wyskakuje zawartość if(std::cin.fail()), ale tez pojawia się zawartosc drugiego "if". Jak kod zmienić, żeby nie pokazywalo tego i dlaczego tak sie dzieje?
P-98953
pekfos
» 2013-12-11 13:46:28
Zmień kolejność sprawdzania i użyj else.
P-98971
Lilsem
Temat założony przez niniejszego użytkownika
» 2013-12-13 19:48:48
Nie rozumiem  co powinienem w tym kodzie zmienić, więc byłbym wdzięczny gdybyś(cie) dodali odpowiednie linijki za mnie, bo naprawdę męczę się z tym już długo, a zapewne jest to perfidnie łatwe.
P-99133
pekfos
» 2013-12-13 19:51:50
Najpierw wczytuj, potem sprawdzaj.
P-99134
Lilsem
Temat założony przez niniejszego użytkownika
» 2013-12-15 18:05:40
Dobra, po prostu dodałem nową zmienną "sprawdzenie", ktora przy błędzie miała wartość 1 i odpowiednio wykorzystałem to przy if( liczba < liczba_losowa && sprawdzenie != 1
P-99310
« 1 »
  Strona 1 z 1