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

dziwny przeskok w switchu c++

+1 głos
536 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 (195,240 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 (256,600 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,060 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 556 wizyt
pytanie zadane 8 sierpnia 2020 w C i C++ przez techno16 Gaduła (4,780 p.)
0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 18 stycznia 2022 w C i C++ przez Fluxik Nowicjusz (240 p.)
0 głosów
1 odpowiedź 382 wizyt
pytanie zadane 26 lipca 2019 w C i C++ przez martin1724 Użytkownik (690 p.)

93,424 zapytań

142,421 odpowiedzi

322,643 komentarzy

62,782 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...