SadBoy98 Temat założony przez niniejszego użytkownika |
Problem z switchami » 2015-12-24 23:34:39 Witam, Otóż mam problem z switchami, a dokładniej z case'ami ponieważ zamiast po wybraniu case iśc do kolejnego switcha to przechodzi do kolejnego case'a a dopiero potem do switch'a #include <iostream> using namespace std; main() { int metoda; int jezioro; int miejsce; int ryba; int sprzet; int grunt; int splawik; do { int jezioro; int exit; int losos, okon, wegorz; float waga; int wybor; menu: cout << " Witamy w Poradniku dla Poczatkujacych Wedkarzy" << endl; cout << " " << endl; cout << "W celu unikniecia zerwan przez zaczepy doradza sie kupno wytrzymalszej zylki." << endl; cout << " " << endl; cout << "Przy zakupie zylek patrz na ich jakosc !!!" << endl; cout << "" << endl; cout << "Jeziora:" << endl; cout << "[1]-Lanskie" << endl; cout << "[2]-Sek" << endl; cout << "[3]-Zalesie" << endl; cout << "[4]-Gim" << endl; cout << "[9]-Wyjscie" << endl; cout << "" << endl; cout << "Wybierz jezioro:"; cin >> jezioro; cout << "" << endl; switch( jezioro ) { case 1: cout << "[1]-Z Brzegu" << endl; cout << "[2]-Z Pomostu" << endl; cout << "[3]-Z Lodzi" << endl; cout << "[4]-Z Lodu" << endl; cout << "[5]-W Nocy" << endl; cout << "" << endl; cout << "Wybierz Miejsce:"; cin >> miejsce; case 9: exit; switch( miejsce ) { case 1: system( "cls" ); cout << "[1]-Leszcz" << endl; cout << "[2]-Lin" << endl; cout << "[3]-Karp" << endl; cout << "[4]-Okon" << endl; cout << "[5]-Ploc" << endl; cout << "[6]-Sielawa" << endl; cout << "[7]-Sieja" << endl; cout << "[8]-Szczupak" << endl; cout << "[9]-Mietus" << endl; cout << "[10]-Ukleja" << endl; cout << "[11]-Wzdrega" << endl; cout << "" << endl; cout << "Wybierz Rybe:"; cin >> ryba; case 2: system( "cls" ); cout << "[1]-Leszcz" << endl; cout << "[2]-Lin" << endl; cout << "[3]-Karp" << endl; cout << "[4]-Okon" << endl; cout << "[5]-Ploc" << endl; cout << "[6]-Sielawa" << endl; cout << "[7]-Sieja" << endl; cout << "[8]-Szczupak" << endl; cout << "[9]-Mietus" << endl; cout << "[10]-Ukleja" << endl; cout << "[11]-Wzdrega" << endl; cout << "" << endl; cout << "Wybierz Rybe:"; cin >> ryba; switch( ryba ) { case 1: system( "cls" ); cout << "Wybrales Leszcza" << endl; cout << "Wymiary: minimalne - 30 cm Nominalne - 30-50 cm Maksymalne - 75 cm " << endl; cout << "Waga: minimalna - 0,6 kg Nominalna - 0,6-4 kg Maksymalna - 7 kg" << endl; cout << " " << endl; cout << "[1]-Grunt" << endl; cout << "[2]-Splawik" << endl; cout << "Wybierz Metode:"; cin >> metoda; switch( metoda ) { case 1: system( "cls" ); cout << "[1]-Minimalny" << endl; cout << "[2]-Nominalny" << endl; cout << "[3]-Najlepszy" << endl; cout << "Wybierz Sprzet:"; cin >> grunt; switch( grunt ) { case 1: system( "cls" ); cout << "" << endl; cout << "Wybrales minimalny sprzet" << endl; cout << "" << endl; cout << "Wedka : Mikado Trython Feeder 360 100g" << endl; cout << "Kolowrotek : Dragon Express RD550i" << endl; cout << "Zylka : Mikado Sensei Feeder 150m 0.30 mm" << endl; cout << "Haczyki : Mikado Sensual Feeder 9109" << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); system( "cls" ); goto menu; case 2: system( "cls" ); cout << "" << endl; cout << "Wybrales nominalny sprzet" << endl; cout << "" << endl; cout << "Wedka : " << endl; cout << "Kolowrotek : " << endl; cout << "Zylka : " << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); system( "cls" ); goto menu; case 3: system( "cls" ); cout << "" << endl; cout << "Wybrales najlepszy sprzet" << endl; cout << "" << endl; cout << "Wedka : " << endl; cout << "Kolowrotek : " << endl; cout << "Zylka : " << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); system( "cls" ); goto menu; } } } } } } while( jezioro == 9 ); return 0; system( "pause" ); }
P.S.Jestem nowy więc do końca nie wiem jak powinienem udostępniać kod aby łatwiej wam mi było pomóc. |
|
Gibas11 |
» 2015-12-25 00:19:11 Na końcu instrukcji dla każdego case powinno być break: switch( lol ) { case 1: DoSth(); break; case 2: DoSthElse(); break; default: PlsDie(); }
|
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-25 00:44:55 problem w tym, że gdy powstawiam te break'ki to nie chce przejść do kolejnego switcha tylko kończy program, a dokładniej zatrzymuje się na switch(jezioro) i gdy wybieramy np.case 1 to kończy program.
|
|
Gibas11 |
» 2015-12-25 06:15:02 Nie mam chwilowo pomysłu co może być bezpośrednia przyczyna twojego problemu, ale: 1. Switch w wypadku podania 9 sprawdza miejsce, mimo że 9 jest opisane jako wyjście. 2. Co robi exit; po case 9? 3. Tak się kończy brak komentarzy i trzymanie wszystkiego w funkcji main. :\ |
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-25 10:23:29 case 9 miał odpowiadać za wyjście z programu Co do funkcji exit; w sumie sam nie wiem po co ona jest, wstawiłem ją ponieważ widziałem, że się ją wstawia czasami w miejscu zakończenia |
|
Gibas11 |
» 2015-12-25 10:46:38 Ok, rozgryzłem. Masz switche w switchach i zgodnie z tym co napisałeś kod wybierania miejsca wykonuje się dopiero kiedy wpiszesz 9, czyli wyjście z programu. Tak jak mòwiłem popraw warunek pętli, nie wiem co dokładnie chciałeś zrobić, ale teraz prawie na pewno jest źle. I nie wywołujesz funkcji exit, brakuje nawiasów, w ogóle to wywal i po prostu przerywaj pętle po wpisaniu 9, ew. daj return 0, zależy czy potraktować "wyjście" dosłownie. |
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-25 11:10:20 A mógłbyś mi podać jak to powinno wyglądać? Narazie to u mnie wygląda tak:
#include <iostream> #include <cstdlib> using namespace std; main() { int metoda; int jezioro; int miejsce; int ryba; int sprzet; int grunt; int splawik; do { int jezioro; int exit; int losos, okon, wegorz; float waga; int wybor; menu: cout << " Witamy w Poradniku dla Poczatkujacych Wedkarzy" << endl; cout << " " << endl; cout << "W celu unikniecia zerwan przez zaczepy doradza sie kupno wytrzymalszej zylki." << endl; cout << " " << endl; cout << "Przy zakupie zylek patrz na ich jakosc !!!" << endl; cout << "" << endl; cout << "Jeziora:" << endl; cout << "[1]-Lanskie" << endl; cout << "[2]-Sek" << endl; cout << "[3]-Zalesie" << endl; cout << "[4]-Gim" << endl; cout << "[9]-Wyjscie" << endl; cout << "" << endl; cout << "Wybierz jezioro:"; cin >> jezioro; cout << "" << endl; switch( jezioro ) { case 1: system( "clear" ); cout << "[1]-Z Brzegu" << endl; cout << "[2]-Z Pomostu" << endl; cout << "[3]-Z Lodzi" << endl; cout << "[4]-Z Lodu" << endl; cout << "[5]-W Nocy" << endl; cout << "" << endl; cout << "Wybierz Miejsce:"; cin >> miejsce; break; default: break; switch( miejsce ) { case 1: system( "clear" ); cout << "[1]-Leszcz" << endl; cout << "[2]-Lin" << endl; cout << "[3]-Karp" << endl; cout << "[4]-Okon" << endl; cout << "[5]-Ploc" << endl; cout << "[6]-Sielawa" << endl; cout << "[7]-Sieja" << endl; cout << "[8]-Szczupak" << endl; cout << "[9]-Mietus" << endl; cout << "[10]-Ukleja" << endl; cout << "[11]-Wzdrega" << endl; cout << "" << endl; cout << "Wybierz Rybe:"; cin >> ryba; break; case 2: system( "clear" ); cout << "[1]-Leszcz" << endl; cout << "[2]-Lin" << endl; cout << "[3]-Karp" << endl; cout << "[4]-Okon" << endl; cout << "[5]-Ploc" << endl; cout << "[6]-Sielawa" << endl; cout << "[7]-Sieja" << endl; cout << "[8]-Szczupak" << endl; cout << "[9]-Mietus" << endl; cout << "[10]-Ukleja" << endl; cout << "[11]-Wzdrega" << endl; cout << "" << endl; cout << "Wybierz Rybe:"; cin >> ryba; break; default: break; switch( ryba ) { case 1: system( "clear" ); cout << "Wybrales Leszcza" << endl; cout << "Wymiary: minimalne - 30 cm Nominalne - 30-50 cm Maksymalne - 75 cm " << endl; cout << "Waga: minimalna - 0,6 kg Nominalna - 0,6-4 kg Maksymalna - 7 kg" << endl; cout << " " << endl; cout << "[1]-Grunt" << endl; cout << "[2]-Splawik" << endl; cout << "Wybierz Metode:"; cin >> metoda; break; default: break; switch( metoda ) { case 1: system( "clear" ); cout << "[1]-Minimalny" << endl; cout << "[2]-Nominalny" << endl; cout << "[3]-Najlepszy" << endl; cout << "Wybierz Sprzet:"; cin >> grunt; break; default: break; switch( grunt ) { case 1: system( "clear" ); cout << "" << endl; cout << "Wybrales minimalny sprzet" << endl; cout << "" << endl; cout << "Wedka : Mikado Trython Feeder 360 100g" << endl; cout << "Kolowrotek : Dragon Express RD550i" << endl; cout << "Zylka : Mikado Sensei Feeder 150m 0.30 mm" << endl; cout << "Haczyki : Mikado Sensual Feeder 9109" << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); break; goto menu; case 2: system( "clear" ); cout << "" << endl; cout << "Wybrales nominalny sprzet" << endl; cout << "" << endl; cout << "Wedka : " << endl; cout << "Kolowrotek : " << endl; cout << "Zylka : " << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); break; goto menu; case 3: system( "clear" ); cout << "" << endl; cout << "Wybrales najlepszy sprzet" << endl; cout << "" << endl; cout << "Wedka : " << endl; cout << "Kolowrotek : " << endl; cout << "Zylka : " << endl; cout << "" << endl; cout << "Nacisnij dowolny klawisz"; cin.sync(); cin.get(); break; goto menu; default: break; } } } } } } while( jezioro == 9 ); return 0; }
|
|
carlosmay |
» 2015-12-25 14:14:38 brakuje typu zwracanego do systemu z funkcji main() int metoda; int jezioro; int miejsce; int ryba; int sprzet; int grunt; int splawik; do { int jezioro; int exit; int losos, okon, wegorz; float waga; int wybor; }
| zmienna 'jezioro' ma nieokreśloną wartość (przez zakrywanie nazw zmiennych), a poza tym pętla ma się powtarzać gdy wprowadzisz opcję wyjścia z programu. |
|
« 1 » 2 |