2017-04-20 1 views
0

J'ai une grille de nombres générés de manière aléatoire de taille gameSize (entrée utilisateur) qui est contenue dans un vecteur de vecteurs. L'utilisateur peut entrer deux coordonnées (x, y) de sorte qu'il change un nombre dans la grille à une valeur prédéfinie, qui est "0".C++ console Vérifier les éléments adjacents pour les doublons

Ainsi, par exemple, l'utilisateur entre, X: 0 Y: 0 et:

{9, 7, 9} 

{9, 6, 8} 

{5, 1, 4} 

devient:

{0, 7, 9} <-- Changes position 0,0 to 0 (the predefined value) 

{9, 6, 8} 

{5, 1, 4} 

Par exemple, les éléments suivants ne seraient pas autorisés parce que trois 0 de l'affrontement.

{0, 0, 9} 

    {0, 6, 8} 

    {5, 1, 4} 

Mais Seraient valables:

{0, 7, 0} 

{9, 0, 8} 

{5, 1, 4} 

Répondre

1

Essayez ceci:

if (
    (row == 0 || myGame[row-1][col] != 0) // element above (if applicable) 
    && (row == gameSize-1 || myGame[row+1][col] != 0) // element below 
    && (col == 0 || myGame[row][col-1] != 0) // element to the left 
    && (col == gameSize-1 || myGame[row][col+1] != 0) // element to the right 
    ) 
    myGame[row][col] = 0; 
else 
... 

Chaque vérifie l'état d'un élément adjacent que si elle est là (en profitant de court-circuit évaluation, voir here sous Opérateurs logiques). En d'autres termes, par exemple, myGame[row-1][col] est vérifié uniquement si row == 0 est faux, ce qui évite les plantages dus à des accès mémoire non autorisés.