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

Pętla while a możliwość wyboru

VPS Starter Arubacloud
0 głosów
148 wizyt
pytanie zadane 25 kwietnia 2015 w C i C++ przez Marcin Szczodry Nowicjusz (210 p.)

Cześć!

Właśnie próbuję praktykować pętle, których oczywiście uczę się z kursu Pana Mirosława. Mianowicie, chcę zakończyć wykonywanie pętli, gdy wpisana przez użytkownika wartość jest równa ciągu znaków: "register" lub "login".

using namespace std;
string action;

int main()
{

    while(action != ("register")||("login"))
    {
        cout << "Wpisz 'register' lub 'login'.";
        cin >> action;
    }

    return 0;
}

Dziękuję i proszę o pomoc!

2 odpowiedzi

+2 głosów
odpowiedź 25 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 25 kwietnia 2015 przez Marcin Szczodry
 
Najlepsza

Ja to bym dał tak:

while(action!="register" && action!="login")

Bo w chwili obecnej Ty dałeś tam OR czyli zawsze jeden z tych warunków będzie spełniony no bo nawet jak będzie wpisane"register" to nie będzie jednocześnie "login" czyli warunek jest prawdziwy a przecież nie o to chodzi :) Czyli wtedy pętla zawsze Ci się wykona dlatego proponuję tutaj użycia AND.

komentarz 25 kwietnia 2015 przez Marcin Szczodry Nowicjusz (210 p.)

Teraz rozumiem to tak:

Gdy action=register i gdy action=login zrób coś tam.

 

Wcześniej rozumiałem to tak:

Gdy action=register lub gdy action=login zrób coś tam.

 

Dopiero ogarnęłem, że jeżeli użyję OR to pierwsze opcja wykluczy drugą i na odwrót - co doprowadziłoby do nieskończonej pętli. 

Dzięki!

 

komentarz 25 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,550 p.)

Cieszę się, że pomogłem!

Dościślając jeszcze to teraz powinieneś rozumieć to tak, że gdy action jest inne niż register i inne niż login to wtedy zrób coś tam. W powyższym komentarzu napisałeś, że gdy jest jednocześnie równe register i login a to przecież nie możliwe. Zakładam więc, że zrozumiałeś dobrze tylko źle napisałeś to tutaj ;)

+1 głos
odpowiedź 25 kwietnia 2015 przez Boshi VIP (100,240 p.)
Masz zły operator bitowy. Gdyż  1 i 0 to 1 a więc true.

Podobne pytania

0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 16 maja 2018 w PHP przez intoksynator Gaduła (3,450 p.)
+1 głos
5 odpowiedzi 936 wizyt
pytanie zadane 20 marca 2016 w C i C++ przez mateusz12 Użytkownik (530 p.)
0 głosów
3 odpowiedzi 864 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...