[Lekcja 16] Gra z losowaniem
Ostatnio zmodyfikowano 2015-05-10 09:54
maciek856 Temat założony przez niniejszego użytkownika |
[Lekcja 16] Gra z losowaniem » 2015-05-10 08:43:31 Otóż napisałem program losujący, wydaje się że wszystko jest cacy. Program ma losować liczbę od 1 do 100, ale niezależnie od tego co wpisze zawsze wyskakuje że liczba jest za mała. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand( time( NULL ) ); int max = 100; int min = 1; unsigned char liczba =( rand() % 100 ) + 1; unsigned char propozycja = 0; unsigned char proby = 0; cout << endl << " Program wylosuje liczbe z zakresu od 1 do 100. Twoim zadaniem jest odgadniecie, jaka to liczba. Powodzenia! "; do { propozycja = 0; cout << endl << endl << " Twoja propozycja to: " << propozycja; cin >> propozycja; cin.clear(); cin.sync(); if( propozycja == liczba ) { proby++; cout << endl << " Gratulacje! Udalo Ci sie odgadnac liczbe! " << endl << " Liczba oddanych przez Ciebie strzalow: " << proby; } else if( propozycja < liczba ) { proby++; cout << endl << " Twoja propozycja jest mniejsza od wylosowanej liczby :( "; cin.clear(); cin.sync(); } else if( propozycja > liczba ) { proby++; cout << endl << " Twoja propozycja jest wieksza od wylosowanej liczby :( "; cin.clear(); cin.sync(); } } while( propozycja != liczba ); return 0; }
Wie ktoś co z tym zrobić? |
|
Szymon2727 |
» 2015-05-10 08:59:32 Zmień usigned char na int i usuń zmienne min. i max. - nie wiem po co tworzysz zmiennych, których nie używasz. Dlaczego ciągle pisało, że podana liczba jest za mała ? Bo char przechowuje pojedynczy znak. |
|
maciek856 Temat założony przez niniejszego użytkownika |
» 2015-05-10 09:10:55 Wszystko poprawiłem, ale błąd się powtarza tzn. jeśli na początku podam za dużą to za każdym razem mówi mi "podana liczba jest większa od wylosowanej", a jeśli na początku podam za małą to za każdym razem mówi mi "podana liczba jest za mała" |
|
carlosmay |
» 2015-05-10 09:26:41 Jeśli tak wygląda kod po popraeieniu... srand( time( NULL ) ); unsigned int liczba =( rand() % 100 ) + 1; unsigned int propozycja = 0; unsigned int proby = 0; ... to kod działa jak należy. |
|
maciek856 Temat założony przez niniejszego użytkownika |
» 2015-05-10 09:31:59 Teraz tak wygląda... Ale po uruchomieniu programu pojawia się "Twoja propozycja to: 0" i dopiero mogę wpisać. Da się jakoś usunąć to zero? |
|
Szymon2727 |
» 2015-05-10 09:40:52 propozycja = 0;
Pewnie stąd te zero. |
|
carlosmay |
» 2015-05-10 09:49:31 Przeanalizuj ten kod, porównuje zmienną typu char i int. Zobaczysz jakie ma wartości typ char po rzutowaniu na typ int, jako char poćwicz na liczbach i literach, druga część pobiera tylko liczby. int main() { char ch; cin >> ch; cout << int( ch ) << endl; int liczba; cin >> liczba; cout << liczba << endl; return 0; } propozycja = 0;
cout << endl << endl << " Zgadnij liczbe: "; cin >> propozycja; cin.clear(); cin.sync(); propozycja = 0;
cout << endl << endl << " Twoja propozycja to: " << propozycja; cin >> propozycja; cin.clear(); cin.sync(); |
|
maciek856 Temat założony przez niniejszego użytkownika |
» 2015-05-10 09:54:27 Teraz wszystko śmiga. Dzięki wielkie :D |
|
« 1 » |