2014-07-24 10 views
-1
#include <iostream> 

using namespace std; 

int main() 
{ 
    string player1, player2; 
    char choice1, choice2; 

    cout<<"Enter the name of player number one"<<endl; 
    cin>> player1; 
    cout<<"Enter the name of player number two"<<endl; 
    cin>>player2; 
    //choose choice 

    while((choice1 !='X')|| (choice1 !='O')) 
    { 
     cout<<"Play number one choose X or O"<<endl; 
     cin>>choice1;   
    } 

en boucle ne se termine jamais, même quand j'entre X ou O. Je veux mettre fin lorsque l'une valeur est entréeen boucle en utilisant OU

Répondre

4

Cette expression peut littéralement jamais être faux. Je pense que vous vouliez dire

while((choice1 !='X') && (choice1 !='O')) 
+0

Pour exprimer en anglais parce que parfois il aide: "Alors que le choix n'est pas X et n'est pas O, demandez un autre choix." –

1

L'instruction while que vous avez ne sera jamais fausse. Modifiez les ||-&&:

while((choice1 !='X') && (choice1 !='O')) 

Pensez-y. Imaginer choix1 = 'O':

while((choice1 !='X')|| (choice1 !='O')) 
     ^true     ^false     == true 

Maintenant choix = 'X':

while((choice1 !='X')|| (choice1 !='O')) 
     ^false  ||  ^true      == true 

Pour plus d'informations sur ce consulter De Morgan's Laws

+0

merci ça marche mais je ne sais toujours pas pourquoi Et et non OU – user2791420

0

est à cause de la OR (||) condition. Si vous entrez 'X', il évalue false sur la première expression mais évalue true sur la deuxième expression, donc while loop ne sera jamais faux. Utilisez "& &" à la place.

Questions connexes