2011-11-11 8 views
0
sur la matrice

si j'aisi la condition

int win[][] ={{1,2,3},{4,5,6},{7,8,9},{1,4,7},{2,5,8},{3,6,9},{1,5,9},{3,5,7}}; 

Puis-je mettre état de cette façon?

if(((win[0][0]) && (win[0][1]) && (win[0][2]))|| 

      ((win[1][0]) && (win[1][1]) && (win[1][2]))|| 

      ((win[2][0]) && (win[2][1]) && (win[2][2]))|| 

      ((win[3][0]) && (win[3][1]) && (win[3][2]))|| 

      ((win[4][0]) && (win[4][1]) && (win[4][2]))|| 

      ((win[5][0]) && (win[5][1]) && (win[5][2]))|| 

      ((win[6][0]) && (win[6][1]) && (win[6][2]))|| 

      ((win[7][0]) && (win[7][1]) && (win[7][2]))|| 

      ((win[8][0]) && (win[8][1]) && win[8][2]))) 
+3

Je ne vois pas pourquoi pas ... mais pourquoi vous le feriez de cette façon? Avez-vous considéré en boucle sur chaque groupe de 3? – James

+1

pourquoi ne pas vous essayer d'abord? – Pratik

Répondre

2

Votre tableau est 8x3, signifie dernier élément sera win[7][2]. Donc appeler le win[8][0] affichera une exception ArrayIndexOutOfBounds. Si vous corrigez cette erreur, votre code fonctionnera. J'espère que cela t'aides.

-1

Si votre objectif est tout à fait confondre le lecteur - vous pouvez

+0

n'a pas encore assez de réputation pour faire des commentaires – andrershov

+1

puis supprimer la réponse autrement j'obtiens un vote négatif – Pratik

+0

Pourriez-vous me expliquer pourquoi vous votez pour cette réponse? Pensez-vous qu'il est acceptable d'écrire de telles conditions? – andrershov

1

Pour une version plus claire de cela, pourquoi ne pas essayer:

for(int i = 0; i < 8; i++) { 
    if(win[i][0] && win[i][1] && win[i][2]) { 
     doStuff(); 
     break; 
    } 
} 
+0

c'est ok votre solution, mais je ne comprends pas exactement comment cela fonctionne ... par exemple si i = 4, quelle sera la condition qui sera vérifiée? – eu127

+0

Vous venez de répondre à votre propre question. Quand 'i = 4', les' i's dans l'instruction if seront remplacés par '4's. Depuis votre condition d'origine était si tout ensemble de trois sont tous vrai (en raison de votre utilisation de l'opérateur || OR). La mienne ajoute la coupure parce que, après que l'une des conditions soit vraie (par exemple si 'win [2] [0] && win [2] [1] && win [2] [2]' évalue à vrai), il n'y a aucune raison continuer à évaluer le reste des ensembles. – kcoppock

+0

merci! Votre solution a bien fonctionné. Merci encore! – eu127