2014-12-23 5 views
0

У меня есть квестоин. Все здесь, похоже, работает нормально, кроме следующей строки:Два условия для цикла while. Какая у меня ошибка?

} while (OneMoreTime != 'y' || OneMoreTime != 'n'); 

Полный код;

#include <iostream> 
using namespace std; 


int main() 
{ 
int ARRAY_LENGTH = 5; 
int MyArray[ARRAY_LENGTH] = {1, 2, 3, 4, 5}; 

cout << "Values in the array: " << ARRAY_LENGTH << endl; 

for (char OneMoreTime = '\0'; OneMoreTime = 'n';) 
{ 

    int WhichNumber = ARRAY_LENGTH; 
    do 
    { 
     cout << "What numbers from the array do you want to see, counting backwards? ";  
     cin >> WhichNumber; 
    } while ((WhichNumber > ARRAY_LENGTH) || (WhichNumber <= 0)); 


    //calculating the correct position in the array (from start) 
    int Number2Print = ARRAY_LENGTH - WhichNumber; 


    //printing 
    cout << "The number is: " << MyArray[Number2Print] << endl; 


    //continue? 
    do 
    { 
     cout << "One more time? (y/n) "; 
     cin >> OneMoreTime; 
    } while (OneMoreTime != 'y' || OneMoreTime != 'n'); 

} 

return 0; 
} 

Что я получаю это постоянно просит «еще один раз? (Y/N)» после того, как успешно печати в первый раз. Если я просто использую одно условие, оно будет работать (но этого будет недостаточно).

+3

Используйте '&&', а не '||'. –

+3

'(OneMoreTime! = 'Y' || OneMoreTime! = 'N')' Разве это не всегда так? – drescherjm

ответ

9

Это условие всегда будет истинным, так как OneMoreTime не может быть равным n и y. То, что вы, вероятно, имели в виду, чтобы использовать && (а)

while (OneMoreTime != 'y' && OneMoreTime != 'n'); 
+0

В C++ я вижу; * интересный * язык. Как и по-итальянски;) –

0

даного While (OneMoreTime = 'у' || OneMoreTime = 'п'!); - это ложное заявление, то, что вы получите, вне зависимости от того, что вы вложили, будет возвращено true и продолжить цикл.

A || B, если вы поместите «y», B истинно, если вы поместите «n», A будет истинным, значит, операция «или» вернет true, если одно из условий истинно.

если вы используете время (OneMoreTime = 'у' & & OneMoreTime = 'п'!); он все равно поместит следующее значение в массив, если вы введете 'n'

Смежные вопросы