wychodzenie do menu z pętli while, która jest w case
Ostatnio zmodyfikowano 2011-05-27 21:28
CTRL85 Temat założony przez niniejszego użytkownika |
wychodzenie do menu z pętli while, która jest w case » 2011-05-27 19:52:31 Mój problem, poega na tym, że robię grę "LOTTO" i mam tam funkcję "Własny zakład" (wybieramy ile typujemy, losujemy itp) Ale są tam pewne ograniczenia, żeby nie było za prosto, więc gdy użytkownik wpisze złą wartość (np przy liczie liczb typowanych wpisze większą od liczby losowanych) chcę, żeby cofało do menu. podgląd: int liczby = 0, zakres = 0, ile_losowanych = 0; cout << "Ile liczb chcesz typowac?" << endl; cin >> liczby; while( liczby < 1 || liczby > 80 ) { cout << "Za duzo lub za malo liczb chcesz typowac!" << endl; } cout << "podaj zakres losowania (min o 10 wiekszy od ilosci typowanych) 1- "; cin >> zakres; while( zakres - liczby < 10 || zakres < 2 || zakres > 110 ) { cout << "zakres zbyt maly lub zbyt duzy!" << endl; } cout << "Ile liczb mam wylosowac?" << endl; cin >> ile_losowanych; while( ile_losowanych - zakres > 5 ) { cout << "liczba losowanych jest taki sam lub mniejszy od zakresu losowania" << endl; }
Pętle while są, ponieważ wcześnie zamiast "//powrot" była możliwość jeszcze próby, ale tak można było się zapętlić :) Chodzi, o to, że jeśli warunek nie jest spełniony - powrot do menu EDIT: Żeby była jasność: jeśli była by jedna pętla, to nie było by problemu, ale mam 3 i nie wiem :( |
|
malan |
» 2011-05-27 20:05:23 Wrzuć to do funkcji. |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-05-27 20:34:36 całość?
Nie chcę wrócić do "Ile liczb chcesz typowac?" tylko do głównego menu. |
|
Mrowqa |
» 2011-05-27 20:37:59 Widocznie mało wiesz o funkcjach :P Mógłbyś dać interesujące Ciebie argumenty, i wywołanie w pętelce ( chyba żebyś wolał powrót do menu - to jeszcze inaczej wywołać ). To da się tak zrobić, ale skoro masz za mało wiedzy to polecam albo się douczyć funkcji albo znaleźć inne rozwiązanie :P EDIT: nie zbyt rozumiem twojego problemu :P Chcesz powrót po prostu do menu ?? ( w funkcji starczyłoby zwykłe return :P - ale jeśli wrzuciłbyś to do funkcji ). Jest takie jedno niezbyt cieszące się wśród programistów rozwiązanie - goto etykieta; :P Dla początkujących może się bardzo przydać - jednak używaj tego tylko w ostateczności kiedy nie ma innego rozwiązania :P ( czemu? w skrócie - kod staje się nieczytelny ) Opis goto: Pozdrawiam, Mrowqa |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-05-27 20:47:08 Wiem, że można to zrobić używając "goto" ale staram się nie używać tego (do tej pory mi się udaje) i stąd ten temat.
Zrobię to z argumentami i jak bym miał jakieś problemy, to napiszę. |
|
Mrowqa |
» 2011-05-27 20:49:49 I to się nazywa dobre podejście :P Czekam na wynik :D Powodzenia |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-05-27 21:28:12 Znalazłem wydaje mi się, że łatwiejszy sposób: bool powrot = false; while (powrot != true) { //menu i reszta int liczby = 0, zakres = 0, ile_losowanych = 0; cout << "Ile liczb chcesz typowac?" << endl; cin >> liczby; if( liczby < 1 || liczby > 80 ) { cout << "Za duzo lub za malo liczb chcesz typowac!" << endl; _sleep(1000); cout << "powrot" << endl; break; } cout << "podaj zakres losowania (min o 10 wiekszy od ilosci typowanych) 1- "; cin >> zakres; if( zakres - liczby < 10 || zakres < 2 || zakres > 110 ) { cout << "zakres zbyt maly lub zbyt duzy!" << endl; _sleep(1000); cout << "powrot" << endl; break; } cout << "Ile liczb mam wylosowac?" << endl; cin >> ile_losowanych; if( ile_losowanych - zakres > 5 ) { cout << "liczba losowanych jest taki sam lub mniejszy od zakresu losowania" << endl; _sleep(1000); cout << "powrot" << endl; break; }
Myślę, że sposób równie dobry :) |
|
« 1 » |