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

Pętla switch case. Jak przejść do następnego kroku?

Object Storage Arubacloud
0 głosów
1,160 wizyt
pytanie zadane 30 kwietnia 2019 w C i C++ przez linq Początkujący (420 p.)

Mam prawdopodobnie trywialne pytanie dotyczące używania instrukcji switch case. Chcę aby mój program działał w określony sposób w zależności od "stanu poprzedniego". Czyli np. mam 3 "stany". Na początku jestem w stanie pierwszym. Jeśli zostanie spełniony jakiś warunek to program przechodzi do stanu drugiego i wykonuje określone czynności, a jeśli spełniony jest inny warunek to przechodzi do stanu trzeciego i tam wykonuje jakieś czynności. Poniżej podaję kod, który nie spełnia mojego założenia bo program wykonuje się krok po kroku, tzn. będąc w stanie pierwszym nawet gdy warunek, który ustala zmienną stan na 3 jest spełniony to program i tak przechodzi do stanu drugiego:

 switch (stan)
    {
    case 1:

            if(jakis_warunek)
             stan=2;
        

            if(jakis_inny_warunek)

            stan=3;

    case 2:
         //jakis kod

    case 3: 
         //jakis kod       

    }

Może jest na to jakiś inny sposób, na który nie mogę wpaść?

P.S. Wiem, że mogę to zrobić używając samych instrukcji if i innych pętli ale może można to również zrobić instrukcją switch.

3 odpowiedzi

+1 głos
odpowiedź 30 kwietnia 2019 przez mokrowski Mędrzec (155,460 p.)
Kartka, długopis/ołówek i rysujesz tablę.

1. W pionie (kolumny), podajesz po kolei wszystkie możliwe stany. Będą to "stany poprzednie".

2. W poziomie (wiersze) odkładasz warunki które powinny być spełnione aby przejść do jakiegokolwiek stanu.

3. Na przecięciu określasz "stan następny" po tym jak warunek zostanie spełniony w danym wierszu a aplikacja jest w stanie poprzednim (co masz w kolumnie).

Teraz to zakoduj tak jak potrafisz (tablice, mapy....) i zdefiniuj gdzie jest stan początkowy i ew. końcowy (stanu końcowego może nie być).
+1 głos
odpowiedź 30 kwietnia 2019 przez Tpk Nałogowiec (40,100 p.)

Przechodzenie do innego stanu - ja bym to próbował rozwiązać jakąś funkcją.

Możliwe jest coś takiego:

#include <iostream>
#include <string>

int main()
{
    int tmp = 0;
    std::cin >> tmp;

    switch(tmp){
        case 1:
        case 2:
        case 3: 
            
            std::cout<<"Hello World";

        break;
    }

}

Wtedy kilka przypadków przyporządkowujesz do jednego bloku instrukcji ale tak czy inaczej lecisz z if'ami.

Same if'y wypchnąłbym przed switch'a a w nim robił tylko to co jest specyficzne dla danego stanu.

0 głosów
odpowiedź 1 maja 2019 przez Mateusz Pawlak Użytkownik (960 p.)
Dla mnie najłatwiej byłoby zamknąć switcha w postaci jaką masz w nieskończonej pętli for, zadeklarować zmienna bool i ustawić ja np na false na początku, w miejscu które miałoby kończyć całe skakanie po case ustawiasz ja na True a na końcu for'a już poza swich'em dajesz if'a że jeśli ten bool jest True robisz break'a

Podobne pytania

0 głosów
1 odpowiedź 276 wizyt
pytanie zadane 30 maja 2019 w C i C++ przez patryksz163 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,026 wizyt
0 głosów
2 odpowiedzi 217 wizyt
pytanie zadane 29 października 2018 w C i C++ przez xBartosz4x Nowicjusz (140 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,936 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!

...