Feuille tableaux 2D

In [ ]:
#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 type vector<vector<int>>:
In [ ]:
// VOTRE CODE ICI
  • Remarquer qu'il est vide:
In [ ]:
t
In [ ]:
t.size()
  • On alloue t pour qu'il ait trois lignes:
In [ ]:
t = vector<vector<int>>(3);
  • Vérifions que t a trois lignes vides:
In [ ]:
t
  • On alloue la première ligne pour qu'elle ait deux éléments
In [ ]:
t[0] = vector<int>(2);
  • Allouer de même les deux autres lignes:
In [ ]:
// VOTRE CODE ICI
  • La valeur de quelle ligne et quelle colonne est elle changée par l'affectation suivante?
In [ ]:
t[0][1] = 1
  • Vérifier:
In [ ]:
t
  • Mettre la valeur 42 en troisième ligne et première colonne
In [ ]:
// VOTRE CODE ICI
  • Vérifier:
In [ ]:
t
In [ ]:
ASSERT( 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:

In [ ]:
#include <iomanip>
  • Exécuter plusieurs fois le code suivant en variant le paramètre de setw:
In [ ]:
cout << "|" << setw(3) << 12 << "|" << endl;
  • Exécuter plusieurs fois le code suivant en variant le paramètre de setw:
In [ ]:
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

  • 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?)
In [ ]:
int L = 10;
int C = 10;

VOTRE RÉPONSE ICI

In [ ]:
vector<vector<int>> tableMultiplication;

VOTRE RÉPONSE ICI

In [ ]:
tableMultiplication = vector<vector<int>>(L);

VOTRE RÉPONSE ICI

In [ ]:
for ( int i = 0; i < L; i++ ) {
    tableMultiplication[i] = vector<int>(C);
}

VOTRE RÉPONSE ICI

In [ ]:
for ( int i = 0; i < L; i++ ) {
    for ( int j = 0; j < C; j++ ) {
        tableMultiplication[i][j] = i * j;
    }
}
In [ ]:
tableMultiplication[6][9]

Affichage direct par Jupyter:

In [ ]:
tableMultiplication

Joli affichage:

In [ ]:
for ( int i = 0; i < L; i++ ) {
    for ( int j = 0; j < C; j++ ) {
        cout << setw(2) << tableMultiplication[i][j] << " ";
    }
    cout << endl;
}