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
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

C/C++
#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.
P-142320
Gibas11
» 2015-12-25 00:19:11
Na końcu instrukcji dla każdego case powinno być break:
C/C++
switch( lol )
{
case 1:
    DoSth();
    break;
case 2:
    DoSthElse();
    break;
    default:
    PlsDie();
}
P-142322
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.
P-142326
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. :\
P-142330
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
P-142334
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.
P-142336
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:
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ę)

#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; // <-W tym miejscu zatrzymuje się program nie wiem dlaczego znaczy, że nie idzie dalej
                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-142337
carlosmay
» 2015-12-25 14:14:38
C/C++
main()
 
 brakuje typu zwracanego do systemu z funkcji main()

C/C++
int metoda;
int jezioro; // deklaracja
int miejsce;
int ryba;
int sprzet;
int grunt;
int splawik;
do
{
    int jezioro; // ponowna deklaaracja, zakrywanie nazw zmiennych
    int exit;
    int losos, okon, wegorz;
    float waga;
    int wybor;
}
 
 

C/C++
while( jezioro == 9 );

 
 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.
P-142344
« 1 » 2
  Strona 1 z 2 Następna strona