Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe
Ostatnio zmodyfikowano 2012-01-29 11:15
aro12345 Temat założony przez niniejszego użytkownika |
Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe » 2012-01-28 20:01:09 Witam. Program działa idealnie poza jednym błędem - po wpisaniu pierwszej liczby ( u mnie zmienna oznaczona abc ) ta liczba tylko się wyświetla i "nie bierze udziału w loterii". Dalej już działa dobrze. Czym jest ten błąd spowodowany?
Zamieszczam kod źródłowy:
#include <iostream> #include <cstdlib> #include <ctime> int main() { std::cout << "****** LOTERIA by ARO ******" << std::endl; srand( time( NULL ) ); int abc; int wynik =( rand() % 10 ) + 1; int pozycja = 1; std::cout << "Podaj liczbe ( zakres 1 - 10 ) i wcisnij Enter: "; while( !( std::cin >> abc ) ) { std::cin >> abc; std::cout << "Podano nieprawidlowy znak" << std::endl; std::cout << "Sproboj ponownie: " << std::endl; std::cin.clear(); std::cin.sync(); } do { std::cin >> abc; if( abc != wynik ) { std::cout << "Sproboj ponownie: "; std::cin.clear(); std::cin.sync(); } pozycja++; } while( abc != wynik ); if( abc == wynik ) { std::cout << "Gratulacje!!!" << std::endl; std::cout << "Wylosowana liczba to: " << wynik << std::endl; std::cout << "Trafiles za " << pozycja << " razem" << std::endl; } return 0; }
|
|
DejaVu |
» 2012-01-28 20:10:30 Masz po prostu źle napisany kod. Musisz go przemyśleć jeszcze raz. Proponuję zacząć od napisania pętli, która będzie tylko sprawdzała 'czy użytkownik zgadł liczbę'. Po napisaniu i przetestowaniu dopisz sprawdzanie czy wartość podana jest poprawna. |
|
aro12345 Temat założony przez niniejszego użytkownika |
Lekcja 16 ( Pseudolosowe liczby calkowite ) zadanie domowe » 2012-01-28 21:44:34 Mysle ze caly kod nie jest bledny. Ewentualnie jego czesc. Czy moze mi ktos powiedziec gdzie jest blad? PS Program normalnie dziala poza pierwszym wpisem - jest on wliczany do liczby trafien ale nawet jak jest poprawnie to nie pojawia sie to co powinno. Drugi wpis dziala juz idealnie.
|
|
aro12345 Temat założony przez niniejszego użytkownika |
» 2012-01-29 11:15:43 Już wiem co jest źle. while( !( std::cin >> abc ) ) { std::cin >> abc; std::cout << "Podano nieprawidlowy znak" << std::endl; std::cout << "Sproboj ponownie: " << std::endl; std::cin.clear(); std::cin.sync(); } |
|
« 1 » |