Vous êtes sur la page 1sur 2

Université Ibn Zohr

Faculté des Sciences d’Agadir


Département d’Informatique
Année : 2015 / 2016

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 »

Examen d’Algorithmique 2 – Filière SMI3-LP2I ; Année 2015-2016 Page 1 / 2


Université Ibn Zohr
Faculté des Sciences d’Agadir
Département d’Informatique
Année : 2015 / 2016

c) Application: Immatriculation voiture


Ecrire une fonction ImmReg(Imm : chaine de caractère, Reg : Entier ) : Booléen
qui vérifie si la chaine d’immatriculation Imm correspond à la région Reg. Si oui la fonction ImmReg
retourne vrai sinon elle retourne faux.
Ex : La fonction ImmReg("55555|A|33", Reg) retourne vrai si la variable Reg vaut 33.
N.B On suppose que la chaine Imm est formatée selon la norme nationale des immatriculations :
"id|lettre|numReg" tels que :
o id : nombre entre 1 et 99999
o lettre : caractère de A à Z
o numReg : nombre entre 1 et 88

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

Ecrivez un algorithme qui permet de :


a) Lire au clavier un contact et ranger ses valeurs dans la variable CONT de type Structure CA
Rappel : Pour accéder par exemple au champ tel de la variable CONT, il suffit d’écrire CONT.tel

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.

Exercice 4 : (Récursivité : 6 points)


1. Somme des premiers entiers : 1.5 point
Ecrire une fonction récursive SRE( ) qui possède un entier naturel n comme paramètre et
retourne la somme des n premiers entiers naturels non nuls (1 + 2 + ... + n).
On suppose que n est un entier strictement positif.
Exemple : SRE(5) = 1 + 2 + 3 + 4 + 5 = 15
2. Fonction d’Ackermann: 4.5 points
Soit la fonction d’Ackermann définit comme suit :

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]

Examen d’Algorithmique 2 – Filière SMI3-LP2I ; Année 2015-2016 Page 2 / 2

Vous aimerez peut-être aussi