Problem z instrukcją else if
Ostatnio zmodyfikowano 2017-10-26 11:09
sobol3k Temat założony przez niniejszego użytkownika |
Problem z instrukcją else if » 2017-10-25 11:27:58 clude < windows.h > #include <ctime> #include <cstdlib> #include <time.h> #include <conio.h>
using namespace std;
void menu( int & x ) { cout << "|||||| PROSTA GRA ||||||\n\n"; cout << "1. Latwy (1-10)\n"; cout << "2. Sredni (1-15)\n"; cout << "3. Trudny (1-20)\n\n"; cout << "Twoj wybor: "; cin >> x; }
void gra( int a, int b, int c ) { while( a != b ) { c++; if( a > b ) { cout << "Twoja liczba jest zbyt duza. Ponow probe. Proba" << " " << c << endl; cout << "Ponowny strzal: "; cin >> a; } else if( a < b ) { cout << "Twoja liczba jest zbyt mala. Ponow probe. Proba" << " " << c << endl; cout << "Ponowny strzal: "; cin >> a; } else cout << "Gratulacje! Poradziles sobie :)"; } }
int main() { srand( time( NULL ) ); int wybor_poziomu, proba = 0, losowa_liczba, twoja_liczba; menu( wybor_poziomu ); switch( wybor_poziomu ) { case 1: { system( "cls" ); losowa_liczba = rand() % 10 + 1; cout << "|||||| TRYB LATWY ||||||\n\n"; cout << "Twoim zadaniem jest odgadnac liczbe z przedzialu od 1 do 10. Masz tylko 3 proby." << endl; cout << "Twoj strzal:" << " "; cin >> twoja_liczba; gra( twoja_liczba, losowa_liczba, proba ); break; } case 2: { system( "cls" ); losowa_liczba = rand() % 15 + 1; cout << "|||||| TRYB SREDNI ||||||\n\n"; cout << "Twoim zadaniem jest odgadnac liczbe z przedzialu od 1 do 15. Masz tylko 3 proby." << endl; cout << "Twoj strzal:" << " "; cin >> twoja_liczba; gra( twoja_liczba, losowa_liczba, proba ); break; } case 3: { system( "cls" ); losowa_liczba = rand() % 20 + 1; cout << "|||||| TRYB TRUDNY ||||||\n\n"; cout << "Twoim zadaniem jest odgadnac liczbe z przedzialu od 1 do 20. Masz tylko 3 proby." << endl; cout << "Twoj strzal:" << " "; cin >> twoja_liczba; gra( twoja_liczba, losowa_liczba, proba ); break; } default: cout << "Nie ma takiego wyboru! Ponow probe."; break; } return 0; }
Mój problem polega na tym iż jeśli użytkownik zgadnie liczbe to program nie wyświetla mu zawartego komunikatu w instrukcji else if a dokładnie chodzi mi o komunikat: "Gratulacje! Poradziles sobie :)" tak jak by pomija to i nie wiem dlaczego tak się dzieje. Drugie pytanie to dlaczego zmienną wybor_poziomu musiałem przekazać przez referencje do funkcji menu() żeby by mi cała funkcja wyświetlająca menu dla gracza działała poprawnie bez podania operatora referencji, kiedy wybierałem poziom to zawsze mi przechodził program do poziomu łatwego nawet jeśli wybrałem średni lub trudny. |
|
YooSy |
» 2017-10-25 11:43:01 tak jak by pomija to i nie wiem dlaczego tak się dzieje. |
Bo pomija. Pobieranie danych od użytkownika masz w niewłaściwym miejscu (miejscach). Po podaniu prawidłowej wartości, program opuszcza pętlę. Masz powtarzający się kod (pozbądź się tego, źródła twojego problemu). Pobieranie danych od użytkownika powinno być w jednym miejscu, a poniżej sprawdzenie danych. |
|
sobol3k Temat założony przez niniejszego użytkownika |
» 2017-10-26 11:09:18 Dziękuje za pomoc już sobie poradziłem :) Można zamknąć |
|
« 1 » |