UNIVERSITE de la POLYNESIE
 FRANCAISE

Examen partiel

Deug MIAS 2 –langage C

28 Novembre 2000

Modalités

1.Vous disposez de une heure,

2.vos documents personnels sont autorisés,

3.le barème est donné à titre indicatif et est susceptible d'être modifié.

1.     Détection de la première différence entre deux listes d'entiers de tailles différentes

Soient deux listes d’entiers tab1 et tab2 de tailles respectives longueur1 et longueur2.

1.1.           Ecrire en pseudo code un algorithme rendant l’indice de la première différence entre les deux listes et –1 si aucune différence n’a été détectée ( 5 pts)

1.2.     Programmer cet algorithme en C ( 3 pts)

2.    Faire tourner un programme à la main

Vous disposez de la procédure mystere ci-dessous ainsi que d’une procédure affiche dont la signature est la suivante :

void affiche(liste l) ;

2.1     Donner la définition C du type liste utilisé ( 1 pts)

2.2     Donner les valeurs successives de l1 si la procédure mystere est appelée sur la liste [4,-5,12,7,8] ( 3 pts)

2.3     Ecrire une procédure main de test de cette procédure avec la liste ci-dessus ( 3 pts)

void mystere(liste *l1)

{

  int indx, m, indm, i, tmp;

  indx = l1->taille-1;

  do

            {

      m = l1->elts[0];

              indm = 0;

      for( i = 1; i <= indx; i ++)

        if (l1->elts[i] > m)

          {

            m = l1->elts[i];

            indm = i;

          }

              tmp = l1->elts[indm];

              l1->elts[indm] = l1->elts[indx];

              l1->elts[indx] = tmp;                                          

              indx--;

            } while(indx>=0);

}

3.     Imaginer un algorithme récursif

3.1     Donner un algorithme récursif de calcul de la somme des éléments d’une liste (3 pts)

3.2.     Programmer cet algorithme en C ( 2 pts)