В то время как цикл выхода из диапазона - PullRequest
0 голосов
/ 10 октября 2011

У меня есть цикл while, который я хочу убежать, когда наберу число от 1 до 5.

Что было бы лучшим утверждением для этого?

У меня сейчас есть это.

while (  oneChoice!= 1 ||  oneChoice!= 2 || oneChoice!= 3 || oneChoice!= 4 || oneChoice!= 5  )
{
cout << "Please make a selection" << endl;
cout << "Choose once more: ";
cin >> oneChoice;
break;
}

Ответы [ 3 ]

3 голосов
/ 10 октября 2011

Я бы сделал это так:

int n;
for (;;)
{
    cout << "Please make a selection (1-5): "
    cin >> n;
    if (n >= 1 && n <= 5) break;
    cout << "You must choose a number from 1 through 5.\n";
}

Разрыв идет посередине, поэтому сообщение об ошибке выводится только в том случае, если пользователь вводит значение вне допустимого диапазона. for (;;) - правильная идиома семейства C для цикла, где вы не хотите проверять условие выхода сверху или снизу.

2 голосов
/ 10 октября 2011

Предполагая, что oneChoice является int (и поэтому не может иметь значение между 1 и 2, например), просто измените условное выражение на:

while (!(1 <= oneChoice && oneChoice <= 5))

или, что эквивалентно:

while (oneChoice < 1 || oneChoice > 5)

Кроме того, если oneChoice не имеет реального значения или важности перед входом в цикл, вероятно, было бы лучше использовать вместо него цикл do { ... } while (oneChoice < 1 || oneChoice > 5);.

2 голосов
/ 10 октября 2011
while (oneChoice < 1 or oneChoice > 5)
{
    //
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...