Université de la Polynésie

Française

 

 

Partiel Algo et programmation C

Deug MIAS 2

Année 2002-03

Jeudi 13 Novembre 2002

 

 

0.                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.                Plus grande suite de nombres pairs dans une liste (env. 6 pts)

A partir d'une liste d'entiers quelconque, on souhaite calculer la plus grande suite de nombres pairs contenue dans cette liste. Il s’agit simplement de rendre la taille de la plus grande suite d’entiers pairs trouvée. Les exemples ci-dessous sont probablement plus explicites qu’un long discours.

Exemples :

1.      liste = 3, 4, 6, 8, 7, 18, 20, 21, 30 le résultat est 3 car la plus longue suite de pairs est : 4, 6, 8

2.      liste = 12, 3, 67, 21, 44, 66, 8, 12 le résultat est 4 car la plus longue suite de pairs est : 44, 66, 8, 12

3.      liste = 5, 7, 6, 3, 9, 10 le résultat est 1 car la plus longue suite de pairs est : 6 ou 10

4.      liste = 5, 7, 11, 3, 9 le résultat est 0 car il n'y a aucun nombre pair

2.                Insertion d’une chaîne de caractères dans une autre chaîne à une position précise (env. 6 pts)

Soit chaine une chaîne de caractères (un tableau de caractères) de taille longueur_chaine. On souhaite insérer une autre chaîne de caractères insert de taille longueur_insert à l’intérieur de chaine de tel sorte que le début de insert se trouve en position pos de chaine.

Exemples :

 

chaine

Insert

pos

Résultat

« bonjour »

« abcd »

3

« bonabcdjour »

« bonjour »

« abcd »

0

« abcdbonjour »

« bonjour »

« abcd »

7

« bonjourabcd »

« Hello »

« world »

2

« Heworldllo »

« Hello »

« world »

5

« Helloworld »

 

3.                Faire tourner un algorithme à la main (env. 4 pts)

Soit l’algorithme suivant :

 

mystere[0] <== tab[0]

lmystere <== 1

Répéter pour i allant de 1 à longueur -1

      /* ?????????? */

      j <== 0

      tant que (tab[i] > mystere[j]) ET (j < lmystere)

            j <== j + 1

      fin_tant_que

        /* ?????????? */

      Répéter pour k allant de lmystere -1 à j par pas de -1

            mystere[k+1] <== mystere[k]

      fin_de_répéter

      mystere[j] <== tab[i]

      lmystere <== lmystere + 1

fin_de_répéter

 

Si tab vaut :   8       12   6     7       14   9       23 et longueur = 7

Donner étape par étape la liste mystere.

 

4.                Programmation en C (env. 4 pts)

Ecrire en C une procédure codant l’algorithme de la question précédente et utilisant pour la représentation d’une liste la structure suivante :

 

#define MAX 15

 

typedef struct liste {

  int taille;

  int elts[MAX];

}liste;