Pętla do while - sprawdzanie czy podano błędny znak

0

Witam mam taki problemik mam pętlę do while.

do{
    cout << "Czy chcesz wyjsc z programu? (Wpisz t lub n): ";
    cin >> znak;

    if (znak != 't' || znak != 'n')
        cout << "Zly znak, muisz podac: t lub n" << endl;

} while (znak != 't' && znak != 'n');

Wszystko działa tylko chodzi o komunikat, zły znak musisz... Chodzi o to, że sprawdza dobrze czy jest literka t lub n, ale po wpisaniu poprawnej wartości np: t wyświetla się jeszcze raz komunikat zły znak i przechodzi dalej.

Jak to rozwiązać, żeby po poprawnej wartości nie wyświetlało się, zły znak... tylko przechodziło poza pętlę.

poprawienie tytułu wątku + dodanie znacznika <code class="cpp"> - fp

2
cin >> ws >> znak; // #include <iomanip>

Poczytaj o zasadzie DRY

0

Sprawdza super, ale jak dopiszę komunikat

cout << "Zly znak, muisz podac: t lub n" << endl;

To i tak na końcu po wpisaniu prawidłowej wartości się wyświetla.

Żeby nie było, że nie przeczytałem co to DRY :D (Don't repeat yourself).

dodanie znacznika <code class="cpp"> - fp

1

Zmienić na zwykłego whila? Kto w ogole używa do whila? ;p

0

No i co mi da samo while skoro i tak się będzie pokazywać informacja o złej wartości po podaniu prawidłowej.

1
if (znak != 't' || znak != 'n')

Równie dobrze możesz dać if(true). Chciałeś if(znak != 't' && znak != 'n') (a co z wielkimi literami? sprawdź std::tolower)

1
    cout << "Czy chcesz wyjsc z programu? (Wpisz t lub n): ";
    cin >> znak;


    while (znak != 't' && znak != 'n')
    {
      cout << "Zly znak, muisz podac: t lub n" << endl;
      cin >> znak;
    }
0

@kq tak wiem to dodam bo to nie problem.

@zonko22 pięknie się zapętla, gdzie kończysz pętle ?

0

@kq w sensie nie problem dodać, zapomniałem.

znak = tolower(znak);

@zonkoo22 Działa tak, dzięki.

dodanie znacznika <code class="cpp"> - fp

1 użytkowników online, w tym zalogowanych: 0, gości: 1