Feuille tableaux 2D¶
#include <iostream>
#include <vector>
using namespace std;
Exercice 1: construction pas à pas d’un tableau 2D: les quatre étapes¶
Déclarer un tableau d’entiers
t
à deux dimensions; donc de typevector<vector<int>>
:
/// BEGIN SOLUTION
vector<vector<int>> t;
/// END SOLUTION
Remarquer qu’il est vide:
t
t.size()
On alloue
t
pour qu’il ait trois lignes:
t = vector<vector<int>>(3);
Vérifions que
t
a trois lignes vides:
t
On alloue la première ligne pour qu’elle ait deux éléments
t[0] = vector<int>(2);
Allouer de même les deux autres lignes:
/// BEGIN SOLUTION
t[1] = vector<int>(2);
t[2] = vector<int>(2);
/// END SOLUTION
La valeur de quelle ligne et quelle colonne est elle changée par l’affectation suivante?
t[0][1] = 1
Vérifier:
t
Mettre la valeur 42 en troisième ligne et première colonne
/// BEGIN SOLUTION
t[2][0] = 42;
/// END SOLUTION
Vérifier:
t
CHECK( t[2][0] == 42 );
Digression: alignement vertical dans les affichages¶
Pour afficher joliment un tableau, on doit gérer l’alignement vertical des colonnes. Cela peut se faire en C++
avec setw
qui réserve un certain nombre de caractères pour l’affichage d’un nombre. Pour utiliser setw
, il faut au préalable charger la bibliothèque iomanip
:
#include <iomanip>
Exécuter plusieurs fois le code suivant en variant le paramètre de
setw
:
cout << "|" << setw(3) << 12 << "|" << endl;
Exécuter plusieurs fois le code suivant en variant le paramètre de
setw
:
for ( int i = 0; i < 10; i++ ) {
for ( int j = 0; j < 10; j++ )
cout << setw(3) << i + j << " ";
cout << endl;
}
Exemple de construction et d’affichage d’un plus gros tableau 2D¶
int L = 10;
int C = 10;
Les cellules suivantes construisent un tableau à deux dimensions et l’affichent. Annoter chaque cellule avec un commentaire précisant quelle étape de la construction elle effectue (initialisation, allocation des lignes, déclaration, allocation; dans quel ordre?)
BEGIN SOLUTION Déclaration: END SOLUTION
vector<vector<int>> tableMultiplication;
BEGIN SOLUTION Allocation: END SOLUTION
tableMultiplication = vector<vector<int>>(L);
BEGIN SOLUTION Allocation des lignes: END SOLUTION
for ( int i = 0; i < L; i++ ) {
tableMultiplication[i] = vector<int>(C);
}
BEGIN SOLUTION Initialisation: END SOLUTION
for ( int i = 0; i < L; i++ ) {
for ( int j = 0; j < C; j++ ) {
tableMultiplication[i][j] = i * j;
}
}
tableMultiplication[6][9]
Affichage direct par Jupyter:
tableMultiplication
Joli affichage:
for ( int i = 0; i < L; i++ ) {
for ( int j = 0; j < C; j++ ) {
cout << setw(2) << tableMultiplication[i][j] << " ";
}
cout << endl;
}