Vous êtes sur la page 1sur 2

Université Ibn Zohr

Faculté des Sciences d’Agadir


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

Examen d’Algorithmique 2
Filière : SMI3
Durée : 2 h - 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: [2 points] [~10 minutes]


1. Ecrire une fonction itérative LC qui prend en paramètre une chaine de caractère ch et qui retourne sa
longueur. La seul variable local qui peut être déclarée dans la fonction LC est un pointeur de
caractère pc (la fonction n'utilisera pas de variables numériques).
Rappel : une chaine de caractères est un tableau de caractères qui se termine par le caractère ‘\0’
2. Ecrire la fonction récursive LCR qui prend en paramètre une chaine de caractère cha et qui retourne
sa longueur.

Exercice 2 : [3 points] [~10 minutes]


1. Ecrire une fonction itérative KR qui prend en paramètre un entier naturel non nul n et qui retourne la
somme des n premiers carrés.
Exemple: si n = 3, la fonction KR retourne 14 (14 = 12 + 22 + 32).
2. Ecrire la fonction KRR la version récursive de la fonction KR.

Exercice 3 : [5 points] [~35 minutes]


On considère qu’une date est une chaine de 10 caractères formatée de la manière suivante : "jj/mm/aaaa" tels
que jj,mm et aaaa représentent respectivement le jour, mois et l’année. Ex : "29/02/2016"
Dans ce qui suit, toutes les dates sont supposées des dates valides.
1. Ecrire une fonction JMAD qui possède 4 paramètres: une chaine de caractère DA représentant une
date et trois autres variables.
Le rôle de la fonction est de récupérer à partir de la date DA l’information relative aux données jour,
mois et année autant que données entières.
indication : vous pouvez utiliser les fonctions prédéfinies vues en cours.
2. Ecrire une fonction COMD(D1[] : caractère, D2[] : caractère) qui prend en paramètre
respectivement deux dates D1 et D2 et qui retourne :
 1 si la date D1 est postérieure à la date D2
 0 si la date D1 est égale à la date D2
 -1 si la date D1 est antérieure à la date D2
Exemples : COMD("01/03/2007","07/03/2005") retourne 1
COMD("11/05/1997","07/03/2005") retourne -1
3. Ecrire une fonction DIFFED qui prend en paramètre deux dates D1 et D2 et qui retourne le nombre
de jours entre les deux dates. On suppose que les deux dates sont dans la même année.

Exercice 4 : [4 points] [~15 minutes]


En mathématique, un nombre super-parfait est un entier positif qui vérifie l’égalité suivante :
σ2(n) = σ(σ(n)) = 2n
Où σ(n) est la fonction de la somme des diviseurs de n, y compris 1 et n.
Exemple : σ(6) = 1 + 2 + 3 + 6 = 12
1. Ecrire une fonction sigma qui prend en paramètre un entier strictement positif n et qui retourne σ(n)
2. Ecrire une fonction NSP qui prend en paramètre un entier strictement positif n et qui retourne 1 si le
nombre n est super-parfait et 0 sinon.

FSA/UIZ : Examen d’Algorithmique 2, Session Normale – Filière SMI3 ; AU 2016-2017 Page 1 / 2


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

3. Déterminer si les nombres suivants sont des nombres super-parfait ou pas. Justifier votre réponse.
1 , 2 , 4 , 6 , 12 , 16 , 19 , 64
Ex : 5 n’est pas super-parfait car σ(5) = 6 et σ2(5) = σ(6) = 12 ≠ 2*5

Exercice 5 : [3 points][~20 minutes]


Une matrice Antisymétrique est une matrice carrée opposée à sa transposée, càd A⊤ = –A
 0 2 5 
 0 4  
Exemples :   ou   2 0 9
  4 0  5  9 0 

1. Ecrire une fonction ANTISYM qui prend en paramètre une matrice carré M de taille nxn et retourne
1 si la matrice M est antisymétrique et 0 sinon.
L’entête de la fonction est :
Fonction ANTISYM (M[][] : Entier, n : Entier) : Entier

Une matrice diagonale est une matrice carrée dont les coefficients en dehors de la diagonale principale sont
nuls.
2. Ecrire une fonction DIAG qui prend en paramètre une matrice carré M de taille nxn et retourne 1 si
la matrice M est diagonale et 0 sinon.
L’entête de la fonction est :
Fonction DIAG(M[][] : Entier, n : Entier) : Entier

3. Ecrire une fonction PRODIAG qui calcul le produit de deux matrices diagonales A et B et le met
dans une matrice C. Les matrices A,B et C sont de taille nxn
Fonction PRODIAG(A[][]:Entier, B[][]:Entier, C[][]:Entier, n:Entier) : Vide

Exercice 6 : [3 points][~ 30 minutes]


Le chiffrement de César est un moyen de codage qui consiste à transformer un ‘texte en clair’ en un texte
codé. Texte en clair Texte codé
Chiffrement de César

Le principe est de remplacer chaque lettre du texte en clair par la lettre obtenue après un décalage d’une
distance d.
Exemple :
Avec un décalage de 3 du mot en clair “FSA”, on obtient le mot codé “IVD”. (F  I , S  V, A  D)
N.B. On suppose dans cet exercice qu’on ne traite que des lettres majuscules.
Rappels :
 l’alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 code ASCII de la lettre A est : 65

1. Ecrire une fonction chiff_Cesar() qui réalise le codage d’une chaine en clair CH_CLAIR dans une
chaine CH_CODE codée par un chiffrement de César avec un décalage d ( 0 ≤ d <26) telle que :
Fonction chiff_Cesar(CH_CLAIR[31]:Caractère, CH_CODE[31]:Caractère, d:Entier) : Vide
Exemple :
si CH_CLAIR = "WEB" et d = 4 alors après l’appel de la fonction, la chaine codée CH_CODE = "AIF"

2. Ecrire une fonction Decod_chiff_Cesar() qui réalise le décodage d’une chaine CH_COD codée par un
chiffrement de César avec un décalage d dans une chaine CH_DEC ( 0 ≤ d < 26) telle que :
Fonction Decod_chiff_Cesar(CH_COD[31]:Caractère, CH_DEC[31]:Caractère, d:Entier):Vide
Exemple :
si CH_COD = "AIF" et d = 4 alors après l’appel de la fonction, la chaine décodée CH_DEC = "WEB"

FSA/UIZ : Examen d’Algorithmique 2, Session Normale – Filière SMI3 ; AU 2016-2017 Page 2 / 2

Vous aimerez peut-être aussi