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

Problem z działaniem warunku | C++

Mały hosting, OGROMNE możliwości
+1 głos
413 wizyt
pytanie zadane 6 czerwca 2021 w C i C++ przez What_RU_Doing Początkujący (310 p.)

Hej, czy mógłby mi ktoś wskazać błąd w poniższym kodzie? Program miał zapętlić wybór, jeżeli zostanie wpisane nieistniejące danie.

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    string x;
    cout << "Wpisz, co chcesz zamowic: ";
    cout << "Hamburger" << '\t' << "Cheeseburger" << '\t' << "Nuggetsy \n";
    cin >> x;
    while (x != "Hamburger" || x != "Cheeseburger" || x != "Nuggetsy")
    {
        cout << "Niepoprawne zamowienie \n";
        cin >> x;
    }
    cout << "Poprawne zamowienie";
    return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 6 czerwca 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
wybrane 7 czerwca 2021 przez What_RU_Doing
 
Najlepsza
Ano to, że trzeba tu najprostszego rachunku zdań. Alternatywa jest błędnym wyborem, bo u Ciebie to znaczy tyle co "x nie jest hamburgerem lub x nie jest cheesburgerem lub x nie jest nuggetsem". Przypuśćmy, że x jest hamburgerem, wtedy przekładając na rachunek zdań mamy: 0 lub 1 lub 1. A to daje nam prawdę, bo mamy do czynienia z alternatywą. Wobec tego warunek jest prawdziwy.

Jeśli chcemy, by wybór był spośród tych trzech, to negacja zdania "x jest hamburgerem lub x jest cheesburgerem lub x jest nuggetsem" będzie brzmiała "x nie jest hamburgerem, x nie jest cheesburgerem i x nie jest nuggetsem", co przekładając na rachunek zdań oznacza, że alternatywa przechodzi na koniunkcję, czyli właściwym spójnikiem jest &&.

Tak więc podsumowując: zamień wszędzie || na & &
+3 głosów
odpowiedź 6 czerwca 2021 przez Bartek030 Obywatel (1,460 p.)
Warunek w pętli jest zawsze spełniony przez co program zawsze zwraca niepoprawne danie. Użyj && zamiast ||.

Podobne pytania

0 głosów
0 odpowiedzi 433 wizyt
pytanie zadane 25 stycznia 2016 w C i C++ przez gujanczyk Obywatel (1,680 p.)
0 głosów
2 odpowiedzi 222 wizyt
–1 głos
3 odpowiedzi 1,016 wizyt

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...