next up previous contents index
suivant: Programmation dynamique monter: main précédent: Structures de données   Table des matières   Index


Représentation unidimensionnelle des matrices

Si on doit écrire des fonctions opérant sur des matrices dont la taille n'est pas connue, la représentation bidimensionnelle des matrices n'est pas utilisable. On représente alors une matrice par un tableau unidimensionnel, et les deux dimensions sont passées en arguments aux fonctions :


void f(int lignes, int colonnes, double t[]);

Dans le corps de la fonction, on remplace un accès à la $i^{eme}$ ligne et la $j^{eme}$ colonne $t_{ij}$ par un accès calculé à t[i * colonnes + j]21. Par exemple, on pourra écrire une fonction d'initialisation de la façon suivante :


void init(int lignes, int colonnes, double t[]) {
  int i, j;
  for(i=0; i<lignes; i++) {
    for(j=0; j<colonnes; j++) {
      t[i * colonnes + j] = double(i+j)/2;
    }
  }
}

On peut alors définir un tableau unidimensionnel t et l'initialiser par :


  const int LIGNES = 3, COLONNES = 4;
  double t[LIGNES * COLONNES];

  init(LIGNES, COLONNES, t);



R Lalement