Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z switchami

Ostatnio zmodyfikowano 2015-12-28 14:48
Autor Wiadomość
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 :

C/C++
#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; // a teraz zatrzymuje się w tym miejscu i zwraca zero czyli kończy program
            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;
   
}
P-142357
carlosmay
» 2015-12-25 22:26:18
ok udało mi się zmienić to z wyjściem
C/C++
while( jezioro < 9 );

 
 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.
C/C++
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; // a teraz zatrzymuje się w tym miejscu i zwraca zero czyli kończy program
    break; // po wybraniu miejsca ten 'break' powoduje opuszczenie pozostalej czesci kodu i ponowne uruchomienie wybierania
    // podejrzewam, ze dalej w kodzie tez sa takie bledy
 
Rozbij to na funkcje. Po uzupełnieniu programu nie połapiesz się w tym wszystkim.
P-142361
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
P-142362
carlosmay
» 2015-12-25 23:42:36
Warunek wielokrotnego wyboru - switch...case
Tutaj jest wszystko co trzeba wiedzieć. Reszta to praktyka.
P-142364
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 :/
P-142365
carlosmay
» 2015-12-26 01:17:07
Myślę, że to jest wystarczająco wymowne.
C/C++
switch( opcja ) {
case 1: {
        // case 1 glowne
        switch( opcja2 )
        {
        case 1:
            // case 1 zagniezdzone w case 1 glownym
            break;
        case 2:
            // case 2 zagniezdzone w case 1 glownym
            break;
        default:
            // jakies nieobsluzone dzialanie w switch zagniezdzonym
            break;
        } // koniec switch zagn
        // case 1 glowne, kolejne instrukcje
    } // koniec case 1 glownego
    break;
case 2:
    // case 2 glowne
    break;
default:
    // jakies nieobsluzone dzialanie w switch glownym
    break;
} // koniec switch glownego
 Rozbudowane bloki case przerzuć do funkcji, a w main() zostaw szkielet instrukcji.
P-142367
SadBoy98
Temat założony przez niniejszego użytkownika
» 2015-12-28 14:48:40
ok, dzięki działa.

C/C++
///modyfikacje : wybór jeziora (wybór z menu) -> wybór miejsca (z pomostu czy z brzegu <--menu ) -> wybór ryby (menu) na danym ³owisku z danego miejsca (zakres) -> wybór metody ( minimalny,nominalny,najlepszy sprzêt na daną rybę)
///http://szwaderki.pl/mapa-lowisk.html
#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; // case 1 glowne
               
                switch( miejsce )
                {
                case 1:
                    {
                        ryba1();
                        cin >> ryba; // case 1 zagniezdzone w case 1 glownym
                        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; // case 2 zagniezdzone w case 1 glownym
                   
                    break;
                    default:
                    // jakies nieobsluzone dzialanie w switch zagniezdzonym
                    break;
                } // koniec switch zagn
                // case 1 glowne, kolejne instrukcje
            } // koniec case 1 glownego
            break;
        case 2:
            // case 2 glowne
            break;
           
        case 9:
            break;
           
        default:
            // jakies nieobsluzone dzialanie w switch glownym
            break;
        } // koniec switch glownego
       
       
       
       
       
       
       
    }
    while( jezioro != 9 );
   
    return 0;
   
}
P-142464
1 « 2 »
Poprzednia strona Strona 2 z 2