2014-12-04 2 views
1

Я делаю простую программу, чтобы спросить вас, если вы хотите пиццу:Как не делать, если заявления «связать» с еще заявление

#include <iostream> 

    using namespace std; 

    int main() 
{ 
    char answer; 
    cout << "Yes or no, would you like some pizza?: "; 
    cin >> answer; 
    cout << endl; 
    if ((answer == 'n') || (answer == 'N')) { 
     cout << "Have some anyway."; 
    } 
    if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 
    else { 
    cout << "Huh? Give me a proper answer."; 
    } 
    cout << endl << endl; 
    return 0; 
} 

Если вы наберете в «Да» или что-нибудь, начиная с a Y возвращает «Вот ваша пицца». Проблема в том, что если вы вводите что-либо, начиная с n, оно говорит: «Иметь некоторые в любом случае» И «Да, дайте мне правильный ответ».

Я пытался заменить заявление еще с другим «если», которые пошли

if ((answer != 'n') || (answer !='N')) { 
    cout << "Give me a proper answer"; 
} 

и сделал это для каждой буквы в том, что если-заявление, но та же проблема возникает ... помочь?

+2

'if (a) {A} else if (b) {B} else if (c) {C} else {D}' – Angew

ответ

4

Это то, что вы ищете?

#include <iostream> 

using namespace std; 

int main() 
{ 
    char answer; 
    cout << "Yes or no, would you like some pizza?: "; 
    cin >> answer; 
    cout << endl; 
    if ((answer == 'n') || (answer == 'N')) { 
     cout << "Have some anyway."; 
    } 
    else if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 
    else { 
     cout << "Huh? Give me a proper answer."; 
    } 
    cout << endl << endl; 
    return 0; 
} 

То, что произошло до того, что следующий код был выполнен, даже если ((answer == 'n') || (answer == 'N')) было правдой:

if ((answer == 'y') || (answer == 'Y')) { 
    cout << "Okay, here's your pizza!"; 
} 
else { 
cout << "Huh? Give me a proper answer."; 
} 

... поэтому нам пришлось написать else if вместо if, так что выше код выполняется только тогда, когда ((answer == 'n') || (answer == 'N')) является ложным.

+0

Это сработало, спасибо! – Westi

+0

Этот ответ не объясняет, что было не так, и как оно было исправлено. – anatolyg

+0

@anatolyg: исправлено, спасибо за рекомендацию! –

2

Использование else if вместо второго if

if ((answer == 'n') || (answer == 'N')) { 
    cout << "Have some anyway."; 
} 
else if ((answer == 'y') || (answer == 'Y')) { 
    cout << "Okay, here's your pizza!"; 
} 
else { 
cout << "Huh? Give me a proper answer."; 
} 
1
if (condition == true) {/*do this*/} 
else if (other_condition == true) {/*do that*/} //repeat as much as you like 
else {/*do other stuff*/} 

Или использовать переключатель заявление:

switch(answer) { 
case 'y': case 'Y': /*do this*/ break; 
case 'n': case 'N': /*do that*/ break; 
/*do other stuff*/ 
} 
1

Попробуйте использовать еще, если во втором случае заявление ... как

else if ((answer == 'y') || (answer == 'Y')) { 
     cout << "Okay, here's your pizza!"; 
    } 

все остальное в порядке