2-D arrays: working with a grid · Tableaux 2-D : travailler avec une grille
A grid of boxes
- A 2-D array is a grid: rows and columns of the same type.
int g[2][3];makes 2 rows and 3 columns — 6 ints in all.- You reach one cell with two indexes:
g[row][col].
Une grille de boîtes
- Un tableau 2D est une grille : des lignes et des colonnes du même type.
int g[2][3];crée 2 lignes et 3 colonnes — soit 6 ints au total.- Vous accédez à une case avec deux indices :
g[row][col].
Rows then columns (row-major)
- C stores a grid row by row: all of row 0, then all of row 1.
- To visit every cell, use a
forloop for the rows, and aforloop inside it for the columns. g[r][c]is the cell in rowr, columnc. Both start at0.
Lignes puis colonnes (row-major)
- C stocke une grille ligne par ligne : toute la ligne 0, puis toute la ligne 1.
- Pour visiter chaque case, utilisez une boucle
forpour les lignes, et une boucleforà l'intérieur pour les colonnes. g[r][c]est la case à la ligner, colonnec. Elles commencent toutes deux à0.
Passing a 2-D array
- When you pass a grid to a function, you must give the column count:
int g[][3]. - C needs the number of columns to find each row in memory; the row count can stay blank.
- So a function takes
int g[][3], int rows— the columns are fixed at3, the rows are passed in.
Passer un tableau 2D
- Lorsque vous transmettez une grille à une fonction, vous devez fournir le nombre de colonnes :
int g[][3]. - C a besoin du nombre de colonnes pour trouver chaque ligne en mémoire ; le nombre de lignes peut rester vide.
- Donc une fonction prend
int g[][3], int rows— les colonnes sont fixes à3, les lignes sont passées.
#include <stdio.h>
int main(void) {
int g[2][3] = {{1, 2, 3}, {4, 5, 6}};
int total = 0;
for (int r = 0; r < 2; r++) {
for (int c = 0; c < 3; c++) {
total += g[r][c];
}
}
printf("%d\n", total); // 21
return 0;
}
Working one row at a time
- You can also work on a single row: loop only the columns for a fixed row
r. - This is how you sum one row, or find the biggest value in a row.
- Mixing the two — an outer row loop with an inner column loop — handles the whole grid.
Travailler une ligne à la fois
- Vous pouvez aussi travailler sur une seule ligne : bouclez uniquement sur les colonnes pour une ligne fixe
r. - C'est ainsi que vous sommez une ligne, ou trouvez la valeur la plus grande dans une ligne.
- Mélanger les deux — une boucle de lignes extérieure avec une boucle de colonnes intérieure — gère toute la grille.
Common mistakes
- Index a grid
grid[row][col]. - The outer loop walks the rows, the inner loop the columns.
Erreurs courantes
- Indexer une grille
grid[row][col]. - La boucle extérieure parcourt les lignes, la boucle intérieure parcourt les colonnes.
Now you try
- For the function tasks, the grid has 3 columns, so the parameter is
int g[][3]. - Do not write a
main— the checker provides one.
À vous maintenant
- Pour les tâches de fonction, la grille a 3 colonnes, donc le paramètre est
int g[][3]. - N'écrivez pas de
main— le vérificateur en fournit une.
A 2-D array is a grid · Un tableau 2-D est une grille
Reach a cell with a[row][col] — row first, then column. · Accédez à une cellule avec a[row][col] — ligne d'abord, puis colonne.
Complete int sum_grid(int g[][3], int rows) so it returns the total of every cell in a grid with rows rows and 3 columns. Do not · non write a main. · Complétez int sum_grid(int g[][3], int rows) pour qu'il retourne le total de toutes les cellules d'une grille avec rows lignes et 3 colonnes. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete int row_sum(int g[][3], int r) so it returns the total of the three cells in row r. Do not · non write a main. · Complétez int row_sum(int g[][3], int r) pour qu'il retourne le total des trois cellules de la ligne r. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
The 2×3 grid g is given. In main, print each row with the three numbers separated by single spaces, one row per line. · La grille 2×3 g est donnée. Dans main, imprimez chaque ligne avec les trois nombres séparés par des espaces simples, une ligne par ligne.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.