Académique Documents
Professionnel Documents
Culture Documents
Examen d’Algorithmique 2
Filière : SMI3 – LP2I
Durée : 1 h 30 min - Documents non autorisés
Important :
Lire tout l’énoncé de l’examen avant de commencer à répondre.
L’ordre de difficulté des exercices n’est pas nécessairement croissant.
Le prêt de tout matériel entre étudiants est formellement interdit.
Exercice 1 : [3 points] (QCM : 1.5 point pour réponse vrai, - 0.5 pour une réponse fausse)
1. R 0
A 5
B -1
Si A>5 Alors
Si B=0 Alors
R A-B
Sinon
R R+A
Fin Si
Sinon
R R-B
Fin Si
Aprés l'exécution du code ci-dessus, quelle sera la valeur de R ?
0 1 2 4 5 6 7
2. Soit la séquence suivante : (i,j et SP sont des variables entières)
SP 0
Pour i allant de 1 à 4 faire
Pour j allant de 1 à 4 faire
SP SP + (2*i + j)
j j+1
FinPour
i i+1
FinPour
Quelle est la valeur de la variable SP après cette séquence :
24 48 52 56 96 120 135
Exercice 2 : [6 points]
a) Ecrire une fonction :
rech_inv_chr(ch : chaine de caractère, c : caractère) : ^ caractère
qui retourne un pointeur vers la dernière occurrence du caractère c dans la chaine ch s’il existe, sinon
elle retourne un pointeur NULL.
b) Ecrire un programme qui :
o lit une chaine de caractère cha et un caractère cc
o Affiche la position de la dernière occurrence de cc dans cha
Ex : si cha = «abcaefg» et cc = ‘a’, le programme doit afficher 3
o affiche la chaine différence: qui commence par la lettre qui suit cc
Ex : si cha = «abcaefg» et cc = ‘a’, le programme affiche « efg »
Exercice 3 : [5 points]
On travaille avec le fichier "Adress.txt" de carnet d’adresses en champs de largeur fixe (Nom: 25, Prénom:
25, Tel: 10, Mail : 20).
Soit la structure CA définie comme suit :
Structure CA
Nom : Caractère * 25
Prénom : Caractère * 25
Tel : Caractère * 10
Mail : Caractère * 20
Fin Structure
b) Supprimer ce contact (s’il existe) du fichier "Adress.txt". Un contact est identifié par son numéro de
téléphone.(on accepte qu’on peut comparer deux chaines de caractère via l’opérateur = ou <>)
Indication : Passer par un tableau de structure CA dans la mémoire vive.
a) Ecrire une fonction récursive A qui prend en paramètre deux entiers m et n et retourne la
valeur de A(m,n) comme définie ci-dessus. [1.5 point]
b) Calculer A(0,0) et A(1,0) [0.5 point]
c) Calculer A(1,2) en justifiant votre réponse [1 point]
d) Calculer A(2,1) en justifiant votre réponse [1.5 point]