Błędny wynik sprawdzania losowania dotyczącego odgadnięcia liczby przez użytkownika
Ostatnio zmodyfikowano 2015-09-02 20:17
kevin Temat założony przez niniejszego użytkownika |
Błędny wynik sprawdzania losowania dotyczącego odgadnięcia liczby przez użytkownika » 2015-09-01 16:36:42 Witam! ;) Napisałem program z zadania domowego, które dotyczyło tematu funkcji. Funkcja losuje liczbę, użytkownik musi zgadnąć jaka to liczba z przedziału 1-5. Niestety program zawsze wyświetla informacje o błędnym wyniku mimo tego, że jest czasami inaczej gdy liczba została odgadnięta przez użytkownika. Komunikat o poprawnym wyniku wyświetla się natychmiast po tym o błędnym wyniku, po czym następuje koniec programu na co wskazuje 'if'. Mogę prosić was o wytłumaczenie i gdzie tkwi błąd? :) #include <iostream> #include <cstdlib> #include <time.h> #include <windows.h> using namespace std; int wczytywanie() { int losowa; losowa = rand() % 5 + 1; return losowa; } main() { srand( time( NULL ) ); int wpisywana; int liczba = wczytywanie(); while( liczba != wpisywana ) { cout << "Podaj liczbe z przedzialu 1-5" << endl; cin >> wpisywana; if( wpisywana > 5 & wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl; cout << "Nie ta liczba, sproboj jeszcze raz!" << endl; Sleep( 3000 ); system( "cls" ); } if( liczba = wpisywana ) cout << "Brawo, zgadles!"; return 0; } |
|
pekfos |
» 2015-09-01 16:52:45 if( wpisywana > 5 & wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl;
|
Zły operator i warunek bez sensu. cout << "Nie ta liczba, sproboj jeszcze raz!" << endl;
|
Wypisujesz to niezależnie od wartości wpisywana. if( liczba = wpisywana ) cout << "Brawo, zgadles!";
|
Zły operator i warunek niepotrzebny. Nie tak powinna wyglądać definicja main(). |
|
kevin Temat założony przez niniejszego użytkownika |
» 2015-09-01 17:31:30 Dzięki za odpowiedź. Poprawiłem błędy i działa ale jest jedno ale... Wraz z komunikatem "Niepoprawny przedzial" wyskakuje ten drugi o błędnej odpowiedzi. #include <iostream> #include <cstdlib> #include <time.h> #include <windows.h> using namespace std; int wczytywanie() { int losowa; losowa = rand() % 5 + 1; return losowa; } main() { srand( time( NULL ) ); int wpisywana; int liczba = wczytywanie(); while( liczba != wpisywana ) { cout << "Podaj liczbe z przedzialu 1-5" << endl; cin >> wpisywana; if( wpisywana > 5 || wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl; if( wpisywana != liczba ) cout << "Nie ta liczba, sproboj jeszcze raz!" << endl; Sleep( 3000 ); system( "cls" ); } if( liczba = wpisywana ) cout << "Brawo, zgadles!"; return 0; } |
|
pekfos |
» 2015-09-01 19:06:57 Wstaw jeden warunek w else drugiego. Połowę. |
|
kevin Temat założony przez niniejszego użytkownika |
» 2015-09-02 20:17:40 Działa, dzieki ;) |
|
« 1 » |