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

Error związany ze swithcem

Object Storage Arubacloud
+1 głos
354 wizyt
pytanie zadane 7 listopada 2021 w C i C++ przez DaXari Początkujący (280 p.)

A więc robię grę ala wisielca i wszystko było dobrze, dopóki nie dodałem w switchu "case 2:". Gra nie ejst jeszcze skończona, ale chciałbym pozbyć się tego błędu od razu. Tu jest skrypt:
 

#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <time.h>
#include <windows.h>
#include <conio.h>
#include <string>
#include <fstream>
#include <algorithm>

using namespace std;

string slowo="pterodaktyl";
string kreski;
string kreska="_";
int zycia=6;
char wybor;
string strzal;
string strzalwyrazu;

int main()
{
   int dlugosc = slowo.size();

   for(int i=1; i<=dlugosc; i++)
   {
       kreski=kreski+kreska;
   }

while(slowo!=kreski)
{
   cout << "------MENU------" << endl;
   cout << "1. Zgadnij lietre" << endl;
   cout << "2. Zgadnij slowo" << endl;
   cout << "----------------" << endl;

   wybor=getch();

   switch(wybor)
   {
    case '1':
     cout << "Wybierz swoj strzal: ";
     cin >> strzal;
     cout << endl;

     size_t pozycja=slowo.find(strzal);
     cout << endl;

     if(pozycja!=string::npos)
     {
         kreski.replace(pozycja,1,strzal);
         cout << kreski;
         cout << endl << endl;
     }
     else
     {
        cout << "Nie trafiles! Tracisz jedno zycie" << endl;
        zycia--;
     }
     break;

    case '2':
         cin >> strzalwyrazu;
         if(strzalwyrazu==slowo)
            kreski.replace(0,dlugosc,strzalwyrazu);
     break;

        cout << "Pozostalych zyc: " << zycia << endl << endl;
   }
}

    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 7 listopada 2021 przez SzkolnyAdmin Szeryf (87,220 p.)

Problem nie tkwi w case '2', ale wyżej. Inicjalizujesz zmienną w obrębie case '1'. Całość po danej etykiecie powinna być w klamrach (bez break'a), przerób fragment tak:

case '1':
{
     cout << "Wybierz swoj strzal: ";
     cin >> strzal;
     cout << endl;
 
     size_t pozycja=slowo.find(strzal);
     cout << endl;
 
     if(pozycja!=string::npos)
     {
         kreski.replace(pozycja,1,strzal);
         cout << kreski;
         cout << endl << endl;
     }
     else
     {
        cout << "Nie trafiles! Tracisz jedno zycie" << endl;
        zycia--;
     }
}
     break;

 

Podobne pytania

0 głosów
1 odpowiedź 217 wizyt
pytanie zadane 23 listopada 2019 w C i C++ przez Hardwell Dyskutant (8,980 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 20 października 2019 w C i C++ przez rel Początkujący (340 p.)
+1 głos
2 odpowiedzi 585 wizyt
pytanie zadane 13 maja 2021 w C i C++ przez Mavimix Dyskutant (8,420 p.)

92,760 zapytań

141,684 odpowiedzi

320,470 komentarzy

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

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!

...