[Kurs c++]Pseudolosowe liczby całkowite. Problem z zadaniem domowym.
Ostatnio zmodyfikowano 2016-05-31 14:49
Lord1 Temat założony przez niniejszego użytkownika |
[Kurs c++]Pseudolosowe liczby całkowite. Problem z zadaniem domowym. » 2016-05-30 15:42:05 Cześć! Mam problem z zadaniem domowym,gdyć wyskakuje mi błąd. Oto mój kod: #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { bool x; srand( time( NULL ) ); int proby = 0, odp = 0, liczba =( rand() % 1000 ) + 1; while( odp == liczba ) { cout << "Wylosowalem liczbe od 1 do 1000. Zgadnij ja "; cin >> odp; x = cin.good(); if( x == 0 ) { cout << "Podaj prawidłową odpowiedz"; } else if( odp < liczba ) { cout << "To jest wieksza liczba" << endl; proby++; } else { cout << "To jest mniejsza liczba" << endl; proby++; } } return 0; } Proszę o pomoc w sprawdzeniu czy int jest prawidlowy. Pozdrawiam. |
|
carlosmay |
» 2016-05-30 16:50:05 - zły warunek. Nieodpowiedni operator. - tutaj też. Podaje odwrotnie podpowiedzi. Do losowani są lepsze narzędzia. np: <random>Zerknij. |
|
Lord1 Temat założony przez niniejszego użytkownika |
» 2016-05-30 20:35:27 Dziękuję za pomoc, ale gdy zrobiłem to co mi poleciłeś to kod działał, ale gdy wpisuję w mijsce podania liczby literę (np. 'A') to program zamiast wyświetlić komunikatu "Podaj prawidłową odpowiedz" i wrócić do podawania liczby to ciągle wyświetla ten komunikat i nie da się nic wpisać. Teraz kod wygląda tak: #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { bool x; srand( time( NULL ) ); int proby = 0, odp = 0, liczba =( rand() % 1000 ) + 1; while( odp != liczba ) { cout << "Wylosowalem liczbe od 1 do 1000. Zgadnij ja "; cin >> odp; x = cin.good(); if( x == 0 ) { cout << "Podaj prawidłową odpowiedz"; } else if( odp < liczba ) { cout << "To jest wieksza liczba" << endl; proby++; } else { cout << "To jest mniejsza liczba" << endl; proby++; } } return 0; } Treść polecenia: Twoim zadaniem domowym jest napisanie prostej gry, która ma działać następująco: 1. Program losuje liczbę z przedziału od 1 do 1000. 2. Użytkownik zgaduje liczbę, która została wylosowana. 3. Jeżeli podana liczba jest za duża (za mała) gra wypisuje stosowny komunikat i powraca do kroku 2. 4. Jeżeli gracz trafi liczbę wylosowaną to progam kończy działanie, wypisując na ekran wylosowaną liczbę oraz liczbę 'strzałów', które oddał gracz. Gra ma być zabezpieczona przed możliwością wprowadzenia błędnych wartości liczbowych.(to mi nie działa poprawnie) |
|
pekfos |
» 2016-05-30 23:41:38 |
|
Lord1 Temat założony przez niniejszego użytkownika |
» 2016-05-31 14:05:37 Przeczytałem cały ten rozdział kilka razy i nie widzę tam rozwiązania mojego problemu. |
|
carlosmay |
» 2016-05-31 14:38:12 Przeczytałem cały ten rozdział kilka razy i nie widzę tam rozwiązania mojego problemu. |
No to słabo. Użyj metod clear() oraz ignore(). Błąd wczytywania można wykrywać w warunku, np: while( !( std::cin >> zmienna ) ) { }
if( std::cin >> zmienna )
else
|
|
Lord1 Temat założony przez niniejszego użytkownika |
» 2016-05-31 14:49:07 Ok. Dzięki za pomoc. Wszystko działa. Skapnąłem sięoco chodzi dopiero po przeczytaniu innego tematu na forum. Zapomniałem wyczyścić bufor :(. Zamykam temat. |
|
« 1 » |