Tableaux multidimensionnels

Jusqu'ici, un tableau nous permet de stocker de nombreuses données, et d'identifier chacune de ces données à l'aide d'un indice numérique. Un tel tableau n'est donc qu'une simple liste.

Mais le terme de tableau évoque en général plutôt une grille (comme dans un tableur). Dans une telle organisation, on identifie une donnée par sa ligne et sa colonne, c'est à dire à l'aide de deux indices.

On peut simuler une grille par un tableau de tableaux, mais c'est compliqué à mettre en place. Le plus simple est de déclarer un tableau à deux dimensions.

int grille[4][5]; /* tableau de 20 cases */
 
grille[1][2] = 54;

Dans cet exemple, nous aurions pu déclarer un tableau de capacité 20 et chaque case aurait été identifiée par un indice entre 0 et 19. Mais dans le tableau grille, qui possède deux capacités (4 et 5), chaque case est identifiée par deux indices : le premier entre 0 et 3, le second entre 0 et 4. Le sens que vous choisissez de donner à ces indices dépend du problème : ligne et colonne, jour et semaine, album et plage...

int grille[4][5] = {{70, 72, 74, 76, 78},
                    {50, 52, 54, 56, 58},
                    {30, 32, 34, 36, 38},
                    {10, 12, 14, 16, 18}};

On peut initialiser un tableau à deux dimensions par une liste de listes d'initialisation. Des retours à la ligne judicieux permettent alors de «voir» les deux dimensions. Cependant, la mémoire est linéaire donc les cases sont en réalité juste à la suite les unes des autres :

70
72
74
76
78
50
52
54
56
58
30
32
34
36
38
10
12
14
16
18

Ce mécanisme peut être étendu pour créer des tableaux à trois ou quatre dimensions (ou même plus), mais c'est peu fréquent.

  1. Progressions. Écrivez un programme où les tableaux t1, t2 et t3 contiennent les valeurs suivantes :

    t1
    1
    2
    3
    4
    5
    1
    2
    3
    4
    5
    t2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    t3
    0
    0
    0
    0
    0
    1
    0
    0
    0
    0
    1
    2
    0
    0
    0
    1
    2
    3
    0
    0
    1
    2
    3
    4
    0

    Utilisez des boucles (pas des listes) pour placer ces valeurs dans les tableaux. Affichez les tableaux les uns au-dessus des autres. Puis affichez-les à nouveau, en inversant lignes et colonnes.

  2. Horizontal. Reprenez l'exercice précédent, et cette fois affichez les tableaux côte-à-côte (comme sur la figure ci-dessus).

  3. Triangle. Écrivez un programme qui place dans un tableau à deux dimensions un triangle de Pascal de hauteur 30 puis l'affiche.

     1
     1   1
     1   2   1
     1   3   3   1
     1   4   6   4   1
     1   5  10  10   5   1
     1   6  15  20  15   6   1
     ...
    

    On rappelle la relation de récurrence :

  4. Balayage. Reprenez l'exercice précédent, en utilisant cette fois un tableau à une seule dimension.

  5. Magique. Un carré magique est une grille de trois lignes et trois colonnes contenant tous les chiffres de 1 à 9. Si on additionne les trois chiffres sur une ligne, une colonne ou une diagonale, on obtient toujours la même valeur.

    8  3  4
    1  5  9
    6  7  2
    

    Écrivez un programme qui demande à l'utilisateur la valeur à mettre dans chacune des neuf cases, puis indique si le carré est magique. On s'attachera à vérifier que :

    • chaque valeur est comprise entre 1 et 9,
    • aucune valeur n'est répétée,
    • les sommes des lignes sont identiques,
    • les sommes des colonnes sont identiques (à la somme trouvée plus haut),
    • les sommes des diagonales sont identiques (à la somme trouvée plus haut).

retour à la page d'accueil

retour au sommet