• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dziwny przeskok w switchu c++

Object Storage Arubacloud
+1 głos
369 wizyt
pytanie zadane 10 października 2021 w C i C++ przez <młody_programista> Początkujący (450 p.)

Witam mam kłopot w mojej pierwszej grze na konsoli chodzi o dziwny ruch z stron c++ opisałem działanie programu w komentarzach

fragment bo cała gra jest dobra tylko kłopot jest w menu + visual studio nie pokazuje żadnych błędów 

 switch (op1)
    {
    case 1:
    {
        if (Zapis.good() == false)
        {

            cout << "Zapis nie istneje";
            Sleep(2500);
            break;
        }
        else if (Zapis.good() == true) 
        {
            Zapis.open("Daneapk.txt", ios::in);
            cout << "Wczytuje grę"; // Wyświetla się  napis następnie przeskakuje do        drugiej opcji 
            while (getline(Zapis, linia))
            { 
                switch (nr_linii)
                {
                case 1: nick = atoi(linia.c_str()); break;
                case 2: Exp = atoi(linia.c_str()); break;
                case 3: kasa = atoi(linia.c_str()); break;
                case 4: day = atoi(linia.c_str()); break;
                    nr_linii++;
                } 

                Sleep(500);
                
                break;
            }

        }
    }
    case 2:
    {

        Zapis.open("Daneapk.txt", ios::out);

        cout << "Nie używaj spacji !" << endl;
        cout << "Podaj nickname :"; cin >> nick;
        Zapis << nick
            ; Zapis.close();
        break;   // czyli to tej i teraz nadpisuje mi tamten zapis gry 
    }

 

komentarz 11 października 2021 przez j23 Mędrzec (194,920 p.)

A to

nick = atoi(linia.c_str());

na pewno dobrze jest?

Po co ten Sleep w linii 27? No i ten break w 29... skoro przerywasz pętle po pierwszej iteracji, to po co w ogóle pętla?

2 odpowiedzi

+1 głos
odpowiedź 11 października 2021 przez VBService Ekspert (252,660 p.)
wybrane 14 października 2021 przez <młody_programista>
 
Najlepsza

Trochę "pogubiłeś się" z tymi break-ami w case 1  wink

Przykład jak to poprawić

   switch (op1)
   {
       case 1:
       {
           if (Zapis.good() == false)
           {
               cout << "Zapis nie istneje";
               Sleep(2500);
           }
           else if (Zapis.good() == true) 
           {
               Zapis.open("Daneapk.txt", ios::in);
               cout << "Wczytuje grę";
               
               int nr_linii=0;
               while (getline(Zapis, linia))
               { 
                   switch (++nr_linii)
                   {
                        case 1: nick = atoi(linia.c_str()); break;
                        case 2: Exp  = atoi(linia.c_str()); break;
                        case 3: kasa = atoi(linia.c_str()); break;
                        case 4: day  = atoi(linia.c_str()); break;
                   } 
     
                   Sleep(500);
               }
     
           }
           
           break;
       }
       case 2:
       {
           Zapis.open("Daneapk.txt", ios::out);
     
           cout << "Nie używaj spacji !" << endl;
           cout << "Podaj nickname :"; cin >> nick;
           Zapis << nick;
           Zapis.close();
           break;
       }

 

 

P.S. nick to chyba string, więc czemu masz taki zapis, co chciałeś osiągnąć?

case 1: nick = atoi(linia.c_str()); break;

 

1
komentarz 14 października 2021 przez <młody_programista> Początkujący (450 p.)
Bardzo Dziękuję za pomoc nie wiem o czym myślałem że zrobiłem takie błędy
+2 głosów
odpowiedź 10 października 2021 przez tkz Nałogowiec (42,000 p.)
Przestań obwiniać c++ i dodaj break za pierwszym casem, i za każdym z którego chcesz wyskoczyć. Bez break'a po casie switch poleci do końca, lub do pierwsza napotkanego break'a.

Podobne pytania

–1 głos
2 odpowiedzi 391 wizyt
pytanie zadane 8 sierpnia 2020 w C i C++ przez techno16 Gaduła (4,780 p.)
0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 18 stycznia 2022 w C i C++ przez Fluxik Nowicjusz (240 p.)
0 głosów
1 odpowiedź 190 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez martin1724 Użytkownik (690 p.)

92,539 zapytań

141,382 odpowiedzi

319,480 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...