Vous êtes sur la page 1sur 4

Université Ibn Zohr

Faculté des Sciences d’Agadir


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

EXAMEN DE RATTRAPAGE D’ALGORITHMIQUE 2 (SMI-


SMI-3)
SOLUTION (NON NECESSAIREMENT OPTIMALE
OPTIMALE)

Exercice 1 (4.5 points):


1. Fonction nbr_amicaux :
fonction int nbr_amicaux(m : entier, n : entier) :entier
variables: i, som_div_m, som_div_n : entiers
som_div_m 0
som_div_n 0
Début
Si (m=n)
retourner 0 /* exemple: m:6 et n:6 */
FinSi
Pour i allant de 1 à div(m,2) faire
Si (mod(m,i) = 0)
som_div_m som_div_m + i
FinSi
FinPour

Si (som_div_m != n)
retourner 0
Sinon
Pour i allant de 1 à div(n,2) faire
Si (mod(n,i) = 0)
som_div_n som_div_n + i
FinSi
FinPour

Si (som_div_n != m)
retourner 0
Sinon
retourner 1
FinSi
FinSi
Fin

2. Vérification :
a. m = 54 et n = 66
Non amicaux :
• 1 + 2 + 3 + 6 + 9 + 18 + 27 = 66
• 1 + 2 + 3 + 6 + 11 + 22 + 33 = 78 (!= 54)
b. m = 48 et n = 75
Non amicaux :
• 1 + 2 + 3 + 4 + 6 + 8 + 12 + 16 + 24 = 76 (!=75)

c. m = 220 et n = 284
Amicaux :
• 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
• 1 + 2 + 4 + 71 + 142 = 220

Examen d’Algorithmique 2 – session de rattrapage – Filière SMI 3 Page 1 / 4


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

Exercice 2 (2 points)
fonction compar_chaine_rec(ch1:chaine de caractères, ch2:chaine de caractères) : Entier
Début
Si (ch1[0] = '\0' et ch2[0] = '\0')
retourner 0
FinSi
Si (ch1[0] < ch2[0])
retourner -1
FinSi
Si (ch1[0] > ch2[0])
retourner 1
FinSi
Si (ch1[0] = ch2[0])
retourner compar_rec(ch1+1,ch2+1)
FinSi
Fin

Exercice 3 (fichiers): (4 points) [~ 20 minutes]


1. Le fichier texte "data.txt" est de type délimité (caractère de délimitation : ‘-’).
Proposer un algorithme qui écrit l'intégralité du fichier "data.txt" à la sortie standard (Ecran).
On produira à l'écran un affichage où pour des raisons esthétiques, le caractère ‘-’ sera
remplacé par un espace.
Solution :
Variable tmp : chaine de caractères
Variable i : Entier
Début
Ouvrir "data.txt" sur 5 en Lecture
Tantque Non EOF(5)
LireFichier 5, tmp
Pour i allant de 1 à Len(tmp)-1
Si Mid(tmp, i, 1) = "-" Alors
Ecrire " "
Sinon
Ecrire Mid(tmp, i, 1)
FinSi
FinTantQue
Fermer 5
Fin
2. On travaille avec le fichier du carnet d’adresses en champs de largeur fixe (Nom: 20,
Prénom: 17, Tel: 10, Mail : 20).
Ecrivez un algorithme qui permet à l’utilisateur de saisir au clavier un nouvel individu qui
sera ajouté à ce carnet d’adresses.
Solution :
Variables Nom * 20, Prénom * 17, Tel * 10, Mail * 20, Lig en Caractère
Début
Ecrire "Entrez le nom : "
Lire Nom
Ecrire "Entrez le prénom : "
Lire Prénom
Ecrire "Entrez le téléphone : "
Lire Tel
Ecrire "Entrez le nom : "
Lire Mail
Lig ← Nom + Prénom + Tel + Mail
Ouvrir "Adresse.txt" sur 1 pour Ajout
EcrireFichier 1, Lig
Fermer 1
Fin

Examen d’Algorithmique 2 – session de rattrapage – Filière SMI 3 Page 2 / 4


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

Exercice 4: (4 points)
1. Calcul des valeurs de : F(102), F(101), F(100) et F(98)

• F(102) = 102 - 10 = 92
• F(101) = 101 – 10 = 91
• F(100) = F(F(111)) = F(101) = 91
• F(98) = F(F(109)) =
= F(99)
= F(F(110))
= F(100) = 91

2. comportement de la fonction F appelée fonction de McCarthy


Exemple : n = 85
F(85) = F(F(96))
= F(F(F(107)))
= F(F(97))
= F(F(F(108)))
= F(F(98))
= F(F(F(109)))
= F(F(99))
= F(F(F(110)))
= F(F(100))
= F(F(F(111)))
= F(F(101))
= F(91)
= F(F(102))
= F(92)
= F(F(103))
= F(93)
= F(F(104))
= F(94)
= F(F(105))
= F(95)
= F(F(106))
= F(96)
= F(F(107))
= F(97)
= F(F(108))
= F(98)
= F(F(109))
= F(99)
= F(F(110))
= F(100)
= F(F(111))
= F(101)
= 91

Conclusion:
Pour des valeurs inférieures à 101, la valeur de F est constante et vaut : 91.
En résumé :
F(n) = n - 10 si n ≥ 101
F (n) = 
 91 sinon

Examen d’Algorithmique 2 – session de rattrapage – Filière SMI 3 Page 3 / 4


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

Exercice 5 (preuve d’algorithme): (5.5 points)


1. Valeur finale de p lorsque :
• (a ; b) = (3 ; 5) : 243
• (a ; b) = (4 ; 3) : 64

2. Justifier que l’algorithme se termine. Quelle est la valeur de m à la fin de la boucle ?


• La suite (mi) est une suite strictement décroissante (tant que mi > 0)
d’entiers positifs ou nuls;
• valeur de m a la fin de l boucle : m = 0

3. Vérifier que « pbm = an » est un invariant de boucle.


indication : traiter séparément le cas où m est pair et le cas où m est impair.
m n
« pb = a » est un invariant de boucle :
• p0 = 1, m0 = n et b0 = a donc on a bien pb = 1*a = a ;
m n n

• On suppose que pibi = a


mi n

2
o Si mi = 2ki+1 alors pi+1=pibi , bi+1=bi et mi+1=ki d’où:
mi+1 2 ki 2ki+1 mi n
pi+1bi+1 = (pibi)(bi ) = pibi = pibi = a
2
o Si mi = 2ki alors pi+1=pi , bi+1=bi et mi+1=ki d’où:
mi+1 2 ki 2ki mi n
pi+1bi+1 = pi(bi ) = pibi = pibi = a

4. Que fait cet algorithme ?


n
retourne a

Examen d’Algorithmique 2 – session de rattrapage – Filière SMI 3 Page 4 / 4

Vous aimerez peut-être aussi