Problem z switchami
Ostatnio zmodyfikowano 2015-12-28 14:48
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-25 20:33:35 ok udało mi się zmienić to z wyjściem ale wciąż mam problem z tym, że zatrzymuje się w tym samym miejscu aktualnie kod 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 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; case 9: 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 22:26:18 ok udało mi się zmienić to z wyjściem |
Ten warunek może i działa w tym przypadku, ale nie jest zgodny z założeniem programu (co jak dodasz do programu opcję nr 10??). Źle są zagnieżdżone 'switche'. Ogólnie kiepsko przemyślane rozwiązanie. 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;
Rozbij to na funkcje. Po uzupełnieniu programu nie połapiesz się w tym wszystkim. |
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-25 22:48:11 A mógłbyś mi to rozpisać na jakimś przykładzie, bo szczerze mówiąc to ja dopiero tego się uczę więc tego jeszcze do końca nie kumam |
|
carlosmay |
» 2015-12-25 23:42:36 |
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-26 00:32:39 ok rozumiem ale w takim razie jak zagnieżdzać te switche by było dobrze ? Bo z tego co mi podałeś to nie ma jak zagnieździć więcej niż jeden switch. No chyba, że dałoby radę jakoś obejść się bez tych switchy to wtedy bym był uradowany bo narazie to z tydzień się z tym morduje :/ |
|
carlosmay |
» 2015-12-26 01:17:07 Myślę, że to jest wystarczająco wymowne. switch( opcja ) { case 1: { switch( opcja2 ) { case 1: break; case 2: break; default: break; } } break; case 2: break; default: break; }
Rozbudowane bloki case przerzuć do funkcji, a w main() zostaw szkielet instrukcji. |
|
SadBoy98 Temat założony przez niniejszego użytkownika |
» 2015-12-28 14:48:40 ok, dzięki działa.
#include <iostream> #include <cstdlib> using namespace std; void wyborsprz() { system( "clear" ); cout << "[1]-Minimalny" << endl; cout << "[2]-Nominalny" << endl; cout << "[3]-Najlepszy" << endl; cout << "Wybierz Sprzet:"; } void mini() { 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(); } void nom() { 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(); } void maxi() { 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(); } void wyborles() { 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:"; } void ryba1() { 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:"; } void wybor() { 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:"; } void menu() { system( "clear" ); 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:"; }
main() { int metoda; int jezioro; int miejsce; int ryba; int sprzet; int grunt; int splawik; do { int losos, okon, wegorz; float waga; menu: menu(); cin >> jezioro; cout << "" << endl; switch( jezioro ) { case 1: { wybor(); cin >> miejsce; switch( miejsce ) { case 1: { ryba1(); cin >> ryba; switch( ryba ) { case 1: { wyborles(); cin >> metoda; switch( metoda ) { case 1: { wyborsprz(); cin >> grunt; switch( grunt ) { case 1: mini(); cin.sync(); cin.get(); break; goto menu; case 2: nom(); cin.sync(); cin.get(); break; goto menu; case 3: maxi(); cin.sync(); cin.get(); break; goto menu; default: break; } break; default: break; } } break; } } break; } case 2: ryba1(); cin >> ryba; break; default: break; } } break; case 2: break; case 9: break; default: break; } } while( jezioro != 9 ); return 0; }
|
|
1 « 2 » |