Université Louis Pasteur Département d’Informatique

Septembre 1989

LICENCE D’INFORMATIQUE

Méthode de programmation

Durée: 3 heures

Première partie (13 points)

On supposera connues les fonctions C de manipulation de chaînes

de caractères (strcmp, strlen, strcpy . . . ).

Soit T (char T[n];) une chaîne de caractères composée de lettres majuscules, de blancs et de points. Les points délimitent les phrases, les mots d’une même phrase sont séparés par un ou plusieurs blancs.

1. Ecrire la fonction MOT(i) qui rend le premier mot rencontré dans la chaîne à partir de l’élément i.

2. Ecrire la fonction récursive NombreDeMots(i) qui compte le nombre de mots de la chaîne T situés après l’élément i.

3. Ecrire un programme qui affiche le nombre de mots de longueur 1, 2, 3, etc..

4. Ecrire le programme localise(m) qui rend l’indice du premier caractère du mot m dans T (-1 s’il ne le trouve pas).

5. Ecrire la fonction substitue(old,new) qui remplace toutes les occurrences du mot old par new (on supposera que la précondition longueur(old)≥longueur(new) est toujours vérifiée).

6. (6 points) Ecrire un programme qui affiche sans duplication la liste alphabétique des palindrômes (mots qui se lisent de la même manière de gauche à droite et de droite à gauche comme kayak, été, ici, …).

Deuxième partie (7 points)

Soit A une matrice n × n. On suppose que A est telle que par permutation de lignes on puisse obtenir une matrice triangulaire supérieure S (S[i, j] = 0 pour i > j). Soit le système d’équations

AX = B

où X et B sont des vecteurs de dimension n.

Ecrire un programme qui affiche les n éléments du vecteur X solution de l’équation.

Exemple: le système

( \begin{matrix}0 & 4 & 2 & 1 \\ 0 & 0 & 0 & −5 \\ 3 & 2 & 6 & −1 \\ 0 & 0 & −2 & 7 \end{matrix} ) ( \begin{matrix}x_{0} \\ x_{1} \\ x_{2} \\ x_{3} \end{matrix} ) = ( \begin{matrix}3 \\ −6 \\ 4 \\ 9 \end{matrix} )

peut s’écrire

( \begin{matrix}3 & 2 & 6 & −1 \\ 0 & 4 & 2 & 1 \\ 0 & 0 & −2 & 7 \\ 0 & 0 & 0 & −5 \end{matrix} ) ( \begin{matrix}x_{0} \\ x_{1} \\ x_{2} \\ x_{3} \end{matrix} ) = ( \begin{matrix}4 \\ 3 \\ 9 \\ −6 \end{matrix} )

d’où x_{3} = 6/5, x_{2} = (9 − 7x_{3})/(−2), etc..