2012-08-02 4 views
0

J'ai rencontré un problème lors du codage avec un tableau C++ 2D. Juste une petite question, que signifie le code ci-dessous?Tableau bidimensionnel, vérification de condition IF

... 

if(array[x][y] >= 9){ 

... 

} 

... 

Cela veut dire lorsque la somme de x et y de la matrice est supérieur ou égal à 9, seul le corps de la FI sera diffusée? Ou ........?

Veuillez expliquer et fournir quelques exemples simples.

Répondre

1

Le tableau est à deux dimensions, cela signifie que l'élément à array[x][y]

contrairement tableaux 1D, qui nécessitent seulement une index, des tableaux 2D nécessitent 2 indices sous la forme de array[x][y] vraisemblablement dans une boucle imbriquée pour.

Vous pouvez parcourir un tel tableau comme celui-ci

for (int x = 0; x < arrayLength; x++) { 
    for (int y = 0; y < array[x]Length; y++) { 

    // do something with array[x][y] 

    } 
} 

où arrayLength est la longueur du tableau et un tableau de taille [x] est la longueur du tableau [x].

Ainsi, en référence au code que vous avez publié, il teste pour voir si le membre du réseau 2D est supérieur ou égal à 9.

0

Cela signifie « si l'élément de coordonnées (x, y) est supérieur ou égal à 9 ... ".

Il n'y a pas d'opération d'ajout. Le tableau est probablement déclaré avec les dimensions minimales (x + 1, y + 1).

int array[2][2] = {{12, 6}, {3, -2}}; 

    int x=1, y=0; 

    if(array[x][y] >= 9){...} // array[1][0] equals 3, condition is false 
1

Ok, commençons par les bases.

1D tableaux

Comment pouvez-vous imaginer un tableau normal? On pourrait dire un tableau normal est comme une ligne de numéro:

|-------------------------------| where every - is one element in your array 

Le premier « - » sur le côté gauche est l'élément à myArray [0] (le « | » sont tout simplement symbolisait qu'il a un début et une fin).

tableaux 2D

un tableau 2D peut être visualisé comme damier, une étagère ou une table avec des colonnes et des lignes.

|-------------------------------| 
|-------------------------------| 
|-------------------------------| 
|-------------------------------| 

Comme dans les échecs, vous avez besoin de 2 valeurs pour adresser un élément. Si vous spécifiez seulement une valeur, le compilateur peut connaître la ligne de votre valeur mais pas sa colonne (ou l'inverse). Cela signifie que vous avez besoin de coordonnées x et y (ce qui est une analogie visuelle pour un système de coordonnées). Pour traiter une valeur, vous devez le faire comme ceci:

myArray [x] [y] où x pourrait être la ligne de notre damier et y la colonne.

Dans votre cas, votre tableau 2D est probablement rempli d'entiers. L'instruction 'if' vérifie si la valeur stockée dans myArray [x] [y] est supérieure à 9. Si myArray [x] [y] est supérieur à 9, cette instruction renvoie true et le code à l'intérieur sera exécuté.Après l'exécution du code à l'intérieur de l'instruction 'if', le programme continuera à exécuter le code après l'instruction if. Les tableaux 2D peuvent être compris comme un tableau contenant des tableaux.

Si vous pensez que les réseaux 3 dimensions sont possibles, vous avez raison. Ici vous avez besoin de 3 coordonnées pour décrire un point puisque vous avez la profondeur, la hauteur et la longueur (ici je parle de la longueur visuelle et non de la longueur en termes de quantité totale d'éléments).

Je ne sais pas si cela a aidé mais c'est bien sûr une approche très visuelle pour expliquer comment fonctionnent les tableaux multidimensionnels.

Exemple

int myArray[3][3] = {{1, 2, 3}, // row 0 
        {4, 5, 6}, // row 1 
        {7, 8, 10}}; // row 2 

Dans ce cas, votre instruction if ne sera exécutée que si x = 2 et y = 2 depuis myArray [2] [2] = 10