Pętla sprawdzająca warunek czy int jest literą wykonuje się w nieskończoność

0

Witam ma pętle w której chce sprawdzić czy użytkownik poda odpowiedzią opcje w menu. I mam warunek który ma wywalić błąd jeśli nie znajduje się ta liczba w przedziale i jeśli omyłkowo użytkownik podał literę. I tu pojawia się mój problem bo na liczbach wszystko działa poprawnie a jak wpisze literę pętla się nie kończy.

 do {
        std::cin >> choice;
        if ((choice < 1 || choice > 5) || isalpha(choice))
            std::cerr << "Nie wlasciwy przedzial" << std::endl;
    } while ( (((choice <= 5) && (choice >= 1)) != true) && isalpha(choice) == false);
2

Przekombinowałeś.

while (true) {
  std::cin >> choice;

  if (warunek) {
    std::cout << "Niewłaściwy przedział." << std::endl;
  } else {
    break;
  }
}

Btw, nie pisz nigdy sth != true czy sth == false, tylko po prostu !sth.

0

Ok już sobie poradziłęm

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