Tableaux Université Bordeaux I Module I20

Travaux dirigés Semaine 7


Tableaux


  1. Ecrire en C la fonction qui calcule le produit scalaire de deux vecteurs u et v, dans un espace de dimension n.

  2. Ecrire en C les fonctions min et max qui calculent les éléments minimum et maximum, dans un tableau t de taille n. Vaut-il mieux calculer la valeur du minimum (resp. maximum), ou son indice ?

  3. Ecrire en C la fonction moyenne qui calcule la moyenne des éléments d'un tableau t de taille n.

  4. Ecrire en C la fonction indice qui calcule l'indice d'un élément x dans un tableau t de taille n ; si x figure plusieurs fois dans t, la fonction retournera l'indice de la première occurrence. Quelle valeur doit-elle retourner si x ne figure pas dans t ?

  5. Ecrire en C la fonction qui calcule le nombre d'occurrences d'un élément x dans un tableau t de taille n.

  6. On considère la fonction suivante :

      #define MAX 20
      
      void f (int *t, int *u, int n) {
        int i, j;
        
        for (j = 0; j <= MAX; j++)
          u [j] = 0;
        for (i = 0; i < n; i++) {
          j = t [i];
          u [j]++;
        }
      }
    

    On suppose donné un tableau notes, contenant les dix valeurs suivantes :

    12 14 10 8 12 12 15 8 13 10 ,
    et déclaré un tableau : int a [MAX + 1]; quel est le résultat de l'appel :

    f (notes, a, 10) ?

    Que calcule, de façon générale, la fonction f ?

    Cette fonction comporte une instruction dangereuse : laquelle ? Que faudrait-il ajouter pour rendre cette fonction sûre ?

  7. On appelle inversion, dans un tableau d'entiers t, tout couple (i,j) d'indices tel que :
    i < j  et  ti > tj

    Ecrire une fonction C qui calcule le nombre d'inversions d'un tableau t de taille n.

  8. Soit un tableau t de n entiers, et soit f la fonction f : i ® ti. Ecrire en C la fonction injection qui détermine si f est injective. Ecrire la fonction bijection qui détermine si f est une bijection [0..n-1] ® [0..n-1].


File translated from TEX by TTH, version 1.96.
On 21 May 1999, 16:57.