Skip to content

Latest commit

 

History

History
249 lines (143 loc) · 23.2 KB

tableaux_multidimensions.rst

File metadata and controls

249 lines (143 loc) · 23.2 KB
.. author::

    Marie-Marie van der Beek, Pablo Gonzalez Alvarez

Les Tableaux

Tableaux multidimensionnels

Un tableau multidimensionnel est un tableau avec au moins un autre tableau dedans. Par exemple, un tableau vide à 2 dimensions s'initialise comme ceci :

TYPE[][] nom = new TYPE[HAUTEUR][LARGEUR];

Un tableau à 2 dimensions est en fait un tableau dans lequel chaque case est un tableau. Ce qui donne le schéma suivant :

Représentation d'un tableau à deux dimensions

QCM

Question 1 - Tableaux à plusieurs dimensions

Outre les tableaux à une dimension, Java supporte également des tableaux à plusieurs dimensions. Laquelle des déclarations ci-dessous est-elle un tableau à plusieurs dimensions qui permet de stocker exactement 24 nombres entiers ?

  • int[][] t = new int[4][6];

    Ce tableau à deux dimensions comprend 4 lignes et 6 colonnes.

  • int[][] t = new int[3][8];

    Ce tableau à deux dimensions comprend 3 lignes et 8 colonnes.

  • int[][] t = new int[2][4];

    Ce tableau à deux dimensions comprend 2 lignes et 4 colonnes.

  • int[][] t = new int[24];

    Cette ligne est erronée. La référence déclarée à gauche est vers un tableau de tableaux alors que seul un tableau d'entiers est créé dans le membre de droite.

  • int[] t = new int[3][8];

    Cette ligne est erronée. La référence déclarée à gauche est vers un tableau alors qu'un tableau de tableaux d'entiers est créé dans le membre de droite.

  • int[][] t = new int[2][4];

    Le tableau créé a deux lignes et 4 colonnes. Il ne permet donc pas de stocker 24 nombres entiers.

Question 2 - Initialisation de tableaux à deux dimensions

Considérons un tableau à deux dimensions initialisé comme suit :

int[][] tab = { {1,2,3},
                {4,5}
               };

Laquelle des expressions booléennes ci-dessous est-elle vraie ?

  • (tab[0].length==3) && (tab[1][1]==5)
  • (tab.length==2) && (tab[0][2]==3)
  • (tab.length==1) && (tab[1][1]==4)

    tab.length est le nombre de lignes du tableau tab, c'est-à-dire 2.

  • (tab[1].length==3) && (tab[0][1]==2)

    tab[1].length est le nombre de colonnes de la ligne 1 du tableau, c'est-à-dire 2.

  • (tab[0][2]==2) && (tab[1][0]==4)

    L'élément tab[0][2] a comme valeur 3 et non 2.

Question 3 - Manipulation de tableau à deux dimensions

Considérons la matrice m de li lignes et c colonnes qui a été initialisée par les instructions ci-dessous :

double m[][] = new double[li][c];
int count =1;
for(int i=0;i<li;i++) {
  for(int j=0; j<c; j++) {
      m[i][j]=count;
  count++;
  }
}

Laquelle des expressions booléennes ci-dessous est-elle vraie ?

  • ( m[li-1][0]==((li-1)*c)+1) && (m[0][c-1]==c)
  • ( m[0][0]==1) && (m[li-1][c-1]==1+li*ci)
  • ( m[0][c-1]==c-1)

    Cet élément de la matrice vaut c et car count est incrémentée à chaque passage dans la boucle for j<c.

  • ( m[li][c]==li*ci)

    Il n'existe pas d'élément m[li][c] dans la matrice m.

  • (m[0][0]==0) && (m[0][c-1]==c)

    count étant initialisé à 1, l'élément m[0][0] est initialisé à la valeur 1.

  • ( m[0][1]==1) && (m[0][c-1]==c)

    m[0][1] vaut 2

Vérifiez vos réponses

.. author::

    Marie-Marie van der Beek, Pablo Gonzalez Alvarez, Antoine Habran