Vous êtes sur la page 1sur 26

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR

ET DE LA RECHERCHE SCIENTIFIQUE
ISET — Nabeul
Département Génie mécanique

EXAMENS CORRIGÉS
D’ALGORITHMIQUE
Réalisé par :

Adnene TLILI

A.U. : 2016 / 2017


Institut Supérieur Des Études Technologiques de Nabeul

Département Génie Mécanique

Devoir surveillé

ALGORITHMIQUE
Date :05/11/2016

Niveaux : CFM2, MI2 & EN2

Proposé par : Mr. Adnene TLILI & Mme. Boutheina BEN FRAJ A.U : 2016/2017

______________________________________________________________________________________

Exercice 1 :

Ecrire un algorithme qui demande un nombre entier de départ, et qui ensuite


écrit la table de multiplication (de 1 à 10) de ce nombre.

Exercice 2 :

Ecrire un algorithme qui multiplie deux entiers positifs a et b selon le principe


récursif suivant :

𝑎 ∗ 𝑏 = 𝑎 ∗ (𝑏 − 1) + 𝑎 Si b est impair

𝑎 ∗ 𝑏 = (2 ∗ 𝑎) ∗ (𝑏/2) Si b est pair

Exercice 3 :

Ecrire un algorithme qui demande un nombre entier de départ, et qui ensuite


affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre
17, le programme affichera les nombres de 18 à 27.

Exercice 4 :

Ecrire un algorithme qui demande successivement deux nombres à l’utilisateur,


et qui calcule et affiche leur moyenne. La saisie des nombres s’arrête lorsque
l’utilisateur entre un zéro.

1
CORRECTION
Proposée par Adnene TLILI

Exercice 1 :
Algorithme Table_de_Multiplication
Var
N : entier
Début
Ecrire (‘Donner un nombre entier’)
Lire (N)
Pour i de 1 à 10 faire
Ecrire (‘le produit :’,N,’*’,i,’=’,i*N)
Fin pour
Fin

Exercice 2 :
Algorithme Multiplication_spéciale
Var
a,b : entier
Début
Ecrire (‘Donner un premier nombre entier’)
Lire (a)
Ecrire (‘Donner un deuxième nombre entier’)
Lire (b)
Si b=0 OU a=0 alors
Ecrire (‘le produit :’,a,’*’,b,’=’,0)
Sinon Si (b mod(2)=1) alors
Ecrire (‘le produit :’,a,’*’,b,’=’, 𝑎 ∗ (𝑏 − 1) + 𝑎)
Sinon
Ecrire (‘le produit :’,a,’*’,b,’=’, (2 ∗ 𝑎) ∗ (𝑏/2))
Fin Si
Fin

Exercice 3 :
Algorithme nombres_successifs
Var
N : entier
Début
Ecrire (‘Donner un nombre entier’)
Lire (N)
Ecrire (‘les dix nombres successifs à’,N,’sont :’)
Pour i de N+1 à N+10 faire
Ecrire (i)
Fin Pour
Fin

2
Exercice 4 :
Algorithme Moyenne
Var
a,b : réels
Début
Répéter
Ecrire (‘Donner deux nombres entiers’)
Lire (a,b)
Si a=0 OU b=0 alors
Ecrire (‘saisie arrêté par l’utilisateur’)
Sinon
Ecrire (‘la moyenne est :’,(a+b)/2)
Fin Si
Jusqu’à a=0 OU b=0
Fin

3
Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

Examen
ALGORITHMIQUE
Date :24/12/2016
Niveaux : CFM2, MI2 & EN2
Proposé par : Mr. Adnene TLILI & Mme. Boutheina BEN FRAJ A.U : 2016/2017

Exercice 1 :
On désire calculer la somme des valeurs de la diagonale principale d'une matrice
carrée 𝑻 de dimension 𝒏 × 𝒏. Pour cela, on vous demande d’écrire un algorithme qui
permet de :
- Lire la dimension 𝑛 de la matrice tel que 𝒏 ≤ 𝑵𝒎𝒂𝒙 = 𝟓𝟎 ;
- Lire la matrice 𝑻(𝒏 × 𝒏) à éléments réels ;
- Calculer la somme des valeurs de la diagonale principale ;
- Afficher la somme.

[⋮ ⋱ ⋮] Diagonale
⋯ principale
Exercice 2 :
Dans le cadre d'étude du comportement thermomécanique d'un alliage métallique,
l'étudiant a besoin de déterminer la dureté de chacune de ces 5 éprouvettes. Pour
chaque éprouvette, il mesure la dureté 3 fois. Il note ses résultats dans un tableau
(𝑻𝒃 ) en brouillon puis il dessine sur son compte rendu un nouveau tableau (𝑻𝒇 ) en
une seule ligne contenant la moyenne des 3 duretés mesurées pour chacune des
éprouvettes.
Ecrire un algorithme qui permet de saisir, traiter et afficher ces deux tableaux (𝑻𝒃 et
𝑻𝒇 ) de mesure de dureté.

Exercice 3 :
On cherche à localiser le maximum et le minimum des valeurs stockées dans un
vecteur 𝑽 de dimension 𝒏. Pour cela, on vous demande d’écrire un algorithme qui
permet de :
- Lire la dimension 𝒏 du vecteur tel que 𝒏 ≤ 𝑵𝒎𝒂𝒙 = 𝟓𝟎 ;
- Lire le vecteur 𝑽(𝒏) à éléments réels ;
- Chercher 𝒎𝒂𝒙 et 𝒎𝒊𝒏 ;
- Afficher 𝒎𝒂𝒙 et 𝒎𝒊𝒏 ainsi que leurs positions respectives (ou première
apparition) dans 𝑽.


1

CORRECTION
Proposée par Adnene TLILI

Exercice 1 :
Algorithme Somme_diagonale
Const
Nmax=50
Var
T : tableau [1..Nmax] de réels
n : entier
S : réel
Début
Répéter
Ecrire (‘Donner la dimension de la matrice carrée ≤ 50’)
Lire (n)
Jusqu’à n>=1 ET n<=50
Pour i de 1 à n faire
Pour j de 1 à n faire
Lire (T[i,j])
Fin pour
Fin pour
S0
Pour i de 1 à n faire
SS+T[i,i]
Fin pour
Écrire (‘ La somme de la diagonale principale est :’,S)
Fin

Exercice 2 :
Algorithme mesure_dureté
Var
Tb : tableau [1..5,1..3] de réels
Tf : tableau [1..5] de réels
S : réel
Début
Pour i de 1 à 5 faire
S0
Pour j de 1 à 3 faire
Ecrire (‘Introduisez la’,j,’ème mesure de
la’,i,’ème éprouvette’)
Lire (Tb[i,j])
SS+Tb[i,j]
Fin pour
Tf[i]S/3
Fin pour
Ecrire (‘Le tableau des résultats bruts est le suivant :’)
Pour i de 1 à 5 faire
Pour j de 1 à 3 faire
Écrire (Tb[i,j])
2

Fin pour
Fin pour
Ecrire (‘Le tableau final des résultats est le suivant :’)
Pour i de 1 à 5 faire
Écrire (Tf[i])
Fin pour
Fin
Exercice 3 :
Algorithme max_min
Const
Nmax=50
Var
V : tableau [1..Nmax] de réels
n, Imax, Imin : entier
max, min : réel
Début
Répéter
Ecrire (‘Donner la dimension du vecteur ≤ 50’)
Lire (n)
Jusqu’à n>=1 ET n<=50
Pour i de 1 à n faire
Lire (V[i])
Fin pour
maxV[1]
minV[1]
Imax1
Imin1
Pour i de 2 à n faire
Si max>V[i] alors
maxV[i]
Imaxi
Sinon Si min<V[i] alors
minV[i]
Imini
Fin Si
Fin Si
Fin pour
Écrire (‘la valeur maximale est’,max,’d’’indice’,Imax)
Écrire (‘la valeur minimale est’,min,’d’’indice’,Imin)
Fin

3

Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

Devoir surveillé

ALGORITHMIQUE
Date :14/11/2015
Niveaux : CFM2, MI2 & EN2
Proposé par : Mr. Adnene TLILI & Mme. Boutheina ben fradj A.U : 2015/2016

Exercice 1 : (10 pts)


1- Ecrire un algorithme qui demande successivement 20 nombres à
l’utilisateur, et qui lui affiche ensuite quel était le plus grand parmi ces 20
nombres :
2- Modifiez ensuite l’algorithme pour que le programme affiche de surcroît en
quelle position avait été saisie ce nombre :
3- Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas
d’avance combien l’utilisateur souhaite saisir de nombres. La saisie des
nombres s’arrête lorsque l’utilisateur entre un zéro.

Exercice 2 : (5 pts)
Un bureau de photocopie facture 0,10 dinars les dix premières photocopies,
0,09 dinars les vingt suivantes et 0,08 dinars au-delà.
Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies
demandé et qui affiche le montant correspondant
Exercice 3 : (5 pts)
Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible 
Il lira au clavier l’heure et les minutes, et il affichera l’heure qu’il sera une
minute plus tard. Par exemple, si l'utilisateur tape 21 puis 32, l'algorithme
doit répondre :
"Dans une minute, il sera 21 heure(s) 33 minute(s).
NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de
la vérifier.

1/1 | P a g e
Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

DEVOIR SURVEILLE

Correction
ALGORITHMIQUE
Date :14/11/2015
Niveaux : CFM2, MI2 & EN2
Proposé par : Mr. Adnene TLILI & Mme. Boutheina ben fradj A.U : 2015/2016

Exercice 1 (10 pts)


1- (3 pts)
Algorithme Exercice_1
Var
N, i, PG : Entier
Début
PG ← 0
Pour i De 1 A 20 Faire
Ecrire ("Entrez un nombre : ")
Lire (N)
Si (i = 1) OU (N > PG) Alors
PG ← N
Fin Si
Fin Pour
Ecrire ("Le nombre le plus grand était : ", PG)
Fin
En ligne 3, on peut mettre n’importe quoi dans PG, il suffit que cette variable
soit affectée pour que le premier passage en ligne 7 ne provoque pas d'erreur.
2- (3.5 pts)
Pour la version améliorée, cela donne :

Algorithme Exercice_1
Var
N, i, PG, IPG : Entier
Début
PG ← 0
Pour i De 1 A 20 Faire
Ecrire ("Entrez un nombre : ")
Lire (N)
Si (i = 1) OU (N > PG) Alors
PG ← N
Fin Si
Fin Pour
Ecrire ("Le nombre le plus grand était : ", PG)
Ecrire ("Il a été saisi en position numéro ", IPG)
Fin

3- (3.5 pts)
Algorithme Exercice_1
Var
N, i, PG, IPG : Entier
Début
N ← 1
i ← 0
PG ← 0
TantQue N <> 0
Ecrire ("Entrez un nombre : ")
Lire (N)
i ← i + 1
Si (i = 1) ou (N > PG) Alors
PG ← N
IPG ← i
Fin Si
Fin TantQue
Ecrire ("Le nombre le plus grand était : ", PG)
Ecrire ("Il a été saisi en position numéro ", IPG)
Fin
Exercice 2 (5pts)
Algorithme Exercice_2
Var
n, p : réels
Début
Ecrire ("Nombre de photocopies : ")
Lire (n)
Si n <= 10 Alors
p ← n * 0,1
SinonSi n <= 30 Alors
p ← 10 * 0,1 + (n – 10) * 0,09
Sinon
p ← 10 * 0,1 + 20 * 0,09 + (n – 30) * 0,08
Fin Si
Ecrire ("Le prix total est: ", p)
Fin

Exercice 3 (5 pts)
Algorithme Exercice_3
Var
h, m : entiers
Début
Ecrire ("Entrez les heures, puis les minutes : ")
Lire (h, m)
m ← m + 1
Si m = 60 Alors
m ← 0
h ← h + 1
Fin Si
Si h = 24 Alors
h ← 0
Fin Si
Ecrire ("Dans une minute il sera ", h, "heure(s) ", m,
"minute(s)")
Fin
Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

EXAMEN

ALGORITHMIQUE
Date : 09/01/2016
Niveaux : CFM2, MI2 & EN2
Proposé par : Mr. Adnene TLILI & Mme. Boutheina BEN FRADJ A.U : 2015/2016

Exercice 1 : (6 pts)
A la naissance d’Imen, son grand-père Tarek, lui ouvre un compte bancaire. Ensuite, à chaque
anniversaire, le grand père d’Imen verse sur son compte 100 dinars, auxquels il ajoute le double
de l’âge d’Imen. Par exemple, lorsqu’elle a deux ans, il lui verse 104 dinars.

Q-1) Ecrire un algorithme qui lit l’âge 𝒏 d’Imen et affiche quelle somme aura Imen lors de son
nième anniversaire.

Exercice 2 : (7 pts)
Pour sa naissance, la grand-mère d’Imen place une somme de 1000 dinars sur son compte
épargne rémunéré au taux de 2.25% (chaque année le compte est augmenté de 2.25%).

Q-1) Développer un algorithme permettant d’afficher un tableau sur 20 ans associant à chaque
anniversaire d’Imen la somme acquise sur son compte.

Exercice 3 : (7 pts)
Salah est un fermier qui dispose d’un couple de Shadocks capables de se reproduire à une
vitesse phénoménale. Un couple de Shadocks met deux mois pour grandir ; à partir du troisième
mois, le couple de Shadocks engendre une paire de nouveaux Shadocks (qui mettront deux mois
pour grandir et donc trois mois pour engendrer une nouvelle paire, etc.). Et surtout, les
Shadocks ne meurent jamais !
D’après cet exercice le nombre de couples de Shadocks 𝑭𝒊 à chaque mois 𝒊 obéit à la loi :

 𝐹1 = 1
 𝐹2 = 1
 ….
 𝐹𝑖 = 𝐹𝑖−1 + 𝐹𝑖−2

Q-1) Développer un algorithme permettant de construire le tableau des couples depuis le


premier jusqu’au 20ème mois.

1/1 | P a g e
Exercice 1
ALGORITHME exercice_1
VAR
compte, âge : entier
DEBUT
ÉCRIRE ("Donner l’âge de Imen")
LIRE (n)
compte ← 0
POUR âge DE 1 A n FAIRE
compte ← compte + 100 + (2 ∗ âge)
FIN POUR
ÉCRIRE ("Le compte de Imen au", n, "ième anniversaire est : ", compte)
FIN

Exercice 2
ALGORITHME exercice_2
VAR
compte : tableau [1..21] de réels
DEBUT
compte [1] ← 1000
POUR i DE 2 A 21 FAIRE
compte[i] ← compte[i-1] ∗ 1.0225
ÉCRIRE ("A", i-1, "an(s), la somme acquise sur le compte est : ", compte[i])
FIN POUR
FIN

Exercice 3
ALGORITHME exercice_3
VAR
couples : tableau [1..20] de réels
DEBUT
couples [1] ← 1
couples [2] ← 1
POUR i DE 3 A 20 FAIRE
couples [i] ← couples [i −1] + couples [i −2]
ÉCRIRE ("le nombre de couples après ", i, " mois est : ", couples[i])
FIN POUR
FIN

2/1 | P a g e
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR Institut Supérieur
DE LA RECHERCHE SCIENTIFIQUE ET DE LA TECHNOLOGIE des Études Technologiques de Nabeul
Direction Générale Des Études Technologiques département génie mécanique

NOM : ……………………………… Prénom : ……………………… Classes : GM ………


N° C.I.N : ………………………….. Salle : ………………………… N° place :……………...

ALGORITHMIQUE
Signature de l’étudiant
Proposé par : A. TLILI, M.A. KROUT, Z. GRARI & I. BOUZEINE
……………………………… A.U : 2009/2010, semestre 1

NOTE : /20 Épreuve de : ALGORITHMIQUE

Exercice n° 1:
Voici un programme écrie en langage C.
Q1- On vous demande d’écrire l’algorithme correspondant à ce programme

#include <stdio.h> ……………………………………………………………


main ()
{
……………………………………………………………
int max_i; ……………………………………………………………
int i; ……………………………………………………………
do
{ ……………………………………………………………
printf("Donner un entier "); ……………………………………………………………
scanf("%d",&max_i) ;
……………………………………………………………
}
while ((max_i<0)||( max_i>100)) ; ……………………………………………………………
……………………………………………………………
for(i = 0; i <= max_i; i++)
{ ……………………………………………………………
if (i%2 == 0) ……………………………………………………………
{ ……………………………………………………………
if (i%3 == 0)
{ ……………………………………………………………
printf("%d est divisible par 3\n",i); ……………………………………………………………
}
……………………………………………………………
} ……………………………………………………………
} ……………………………………………………………
}
……………………………………………………………
……………………………………………………………
……………………………………………………………
……………………………………………………………
Q2- Que fait ce programme ? …
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
NE RIEN ÉCRIRE ICI

Exercice n° 2:
Q1- Écrire un algorithme qui remplit une matrice carrée M (N,N) (5 ≤ N ≤ Nmax=10) avec une suite d’entiers lus
au clavier, transpose la matrice et affiche la matrice résultat T obtenue. T = transposé (M)
Transposer une matrice M revient à intervertir les lignes et les colonnes. C'est-à-dire les lignes deviennent les
colonnes comme dans l’exemple suivant :

1 2 3 1 4 7

M= 4 5 6 le transposé de M, T= 2 5 8
7 8 9 3 6 9

ALGORITHME
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
2
…………………………………………………………………………………………………………
…………
NE RIEN ÉCRIRE ICI

Exercice n° 3:
En multipliant une matrice A de dimensions (N,M) avec une matrice B de dimensions (M,P) on obtient une
matrice C de dimensions (N,P). 𝐴(𝑁, 𝑀)×𝐵(𝑀, 𝑃) = 𝐶(𝑁, 𝑃).
La multiplication de deux matrices se fait en multipliant les composantes des deux matrices lignes par
colonnes : 𝐶𝑖𝑗 = ∑𝑘=𝑀
𝑘=1 (𝐴𝑖𝑘 ×𝐵𝑘𝑗 ).

Rappel :
𝑒 𝑓 𝑔 𝑛 𝑜 (𝑒 ∗ 𝑛 + 𝑓 ∗ 𝑝 + 𝑔 ∗ 𝑟) (𝑒 ∗ 𝑜 + 𝑓 ∗ 𝑞 + 𝑔 ∗ 𝑠)
(ℎ 𝑖 𝑗 ) × (𝑝 𝑞 ) = ( (ℎ ∗ 𝑛 + 𝑖 ∗ 𝑝 + 𝑗 ∗ 𝑟) (ℎ ∗ 𝑜 + 𝑖 ∗ 𝑞 + 𝑗 ∗ 𝑠) )
𝑘 𝑙 𝑚 𝑟 𝑠 (𝑘 ∗ 𝑛 + 𝑙 ∗ 𝑝 + 𝑚 ∗ 𝑟) (𝑘 ∗ 𝑜 + 𝑙 ∗ 𝑞 + 𝑚 ∗ 𝑠)
On prend : 1 ≤ N ≤ Nmax=10 ; 1 ≤ M ≤ Mmax=10 ; 1 ≤ P ≤ Pmax=10

ALGORITHME
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
3
…………………………………………………………………………………………………………
…………
NE RIEN ÉCRIRE ICI

Exercice n° 4:
Q1- Écrire un algorithme permettant de calculer le PGCD (le Plus Grand Commun Dénominateur) de deux
nombres en utilisant l’astuce suivante : soustraite le plus petit des deux entiers du plus grand jusqu'à ce qu’ils
soient égaux.
9 15
Exemple : soit à calculer le PGCD des deux nombres suivants : 9 et 15 soit et
PGCD PGCD
Donc : 15 ∶ 15 − 9 = 6 6−3= 𝟑
9 ∶ 9−6= 𝟑
9 15
D’où le PGCD des deux nombres 9 et 15 est 3 donc on peut écrire et
3 3
Q2- Traduire cet algorithme en langage C
ALGORITHME PROGRAMME EN C
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
……………………………………………………… ……………………………………………………
BON TRAVAIL
……………………………………………………… ……………………………………………………
… 4 ……………………………………………………
…………
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR Institut Supérieur
DE LA RECHERCHE SCIENTIFIQUE ET DE LA TECHNOLOGIE des Études Technologiques de Nabeul
Direction Générale Des Études Technologiques département génie mécanique

NOM : ……………………………… Prénom : ……………………… Classes : GM ………


N° C.I.N : …………………………..
CORRECTION
Salle : ………………………… N° place :……………...

ALGORITHMIQUE
Signature de l’étudiant
Proposé par : Adnene TLILI
……………………………… A.U : 2009/2010, semestre 1

NOTE : /20 Épreuve de : ALGORITHMIQUE

Exercice n° 1 : (4 points)
Voici un programme écrie en langage C.
Q1- On vous demande d’écrire l’algorithme correspondant à ce programme

#include <stdio.h> Algorithme Divisible


main () Var max_i, i, nbmax : entier
{
int max_i;
Début
int i; repeter
do Ecrire (“donner un entier”)
{ Lire (max_i)
printf("Donner un entier "); Jusqu’à max_i >=0 et max_i <=100
scanf("%d",&max_i) ;
}
Pour i de 1 à max_i faire
while ((max_i<0)||( max_i>100)) ; Si i mod 2=0 alors
Si i mod 3=0 alors
for(i = 0; i <= max_i; i++) Ecrire (i, “ est divisible par 3”)
{ Fin si
if (i%2 == 0)
{ Fin si
if (i%3 == 0)
{ Fin pour
printf("%d est divisible par 3\n",i);
} Fin
}
}
}

Q2- Que fait ce programme ?

Cet algorithme affiche tous les nombres paires et divisible par 3 appartenant à l’intervalle [1..max_i]
NE RIEN ÉCRIRE ICI

Exercice n° 2 : (6 points)
Q1- Écrire un algorithme qui remplit une matrice carrée M (N, N) (5 ≤ N ≤ Nmax=10) avec une suite d’entiers lus
au clavier, transpose la matrice et affiche la matrice résultat T obtenue. T = transposé (M)
Transposer une matrice M revient à intervertir les lignes et les colonnes. C'est-à-dire les lignes deviennent les
colonnes comme dans l’exemple suivant :

1 2 3 1 4 7

M= 4 5 6 le transposé de M, T= 2 5 8
7 8 9 3 6 9

ALGORITHME

Algorithme transposé Pour j de i+1 à n faire


Var i, j, n, val : entier val  M[i,j]
M : tableau [1..10,1..10]d’ entier M[i,j] M[j,i]
Début M[j,i] val
repeter j j+1
Ecrire (“donner n”) Fin pour
Lire (n) i  i+1
Jusqu’à n >=5 et n<=10 Fin pour
Pour i de 1 à n faire Pour i de 1 à n faire
Pour j de 1 à n faire Pour j de 1 à n faire
Lire (M[i,j]) Ecrire (M[i,j])
Fin pour Fin pour
Fin pour Fin pour
FIN
Pour i de 1 à n -1faire

Exercice n° 3 : (6 points)
En multipliant une matrice A de dimensions (N,M) avec une matrice B de dimensions (M,P) on obtient une
matrice C de dimensions (N,P). 𝐴(𝑁, 𝑀) × 𝐵(𝑀, 𝑃) = 𝐶(𝑁, 𝑃).
La multiplication de deux matrices se fait en multipliant les composantes des deux matrices lignes par
colonnes : 𝐶𝑖𝑗 = ∑𝑘=𝑀
𝑘=1 (𝐴𝑖𝑘 × 𝐵𝑘𝑗 ).

Rappel :
2
NE RIEN ÉCRIRE ICI

𝑒 𝑓 𝑔 𝑛 𝑜 (𝑒 ∗ 𝑛 + 𝑓 ∗ 𝑝 + 𝑔 ∗ 𝑟) (𝑒 ∗ 𝑜 + 𝑓 ∗ 𝑞 + 𝑔 ∗ 𝑠)
(ℎ 𝑖 𝑗 ) × (𝑝 𝑞 ) = ( (ℎ ∗ 𝑛 + 𝑖 ∗ 𝑝 + 𝑗 ∗ 𝑟) (ℎ ∗ 𝑜 + 𝑖 ∗ 𝑞 + 𝑗 ∗ 𝑠) )
𝑘 𝑙 𝑚 𝑟 𝑠 (𝑘 ∗ 𝑛 + 𝑙 ∗ 𝑝 + 𝑚 ∗ 𝑟) (𝑘 ∗ 𝑜 + 𝑙 ∗ 𝑞 + 𝑚 ∗ 𝑠)
On prend : 1 ≤ N ≤ Nmax=10 ; 1 ≤ M ≤ Mmax=10 ; 1 ≤ P ≤ Pmax=10

ALGORITHME

Algorithme produit_Matriciel Pour i de 1 à M faire


Type Pour j de 1 à P faire
Mat : tableau [1..10,1..10] d’ entier Lire (B[i,j])
Var Fin pour
i, j, k, N, M, P: entier Fin pour
A, B, C : Mat
Pour i de 1 à N faire
Début Pour j de 1 à P faire
Répéter C[i,j]  0
Écrire (“donner N”) pour k de 1 à M faire
Lire (N) C[i,j]  C[i,j] + A[i,k]*B[k,j]
Écrire (“donner M”) Fin pour
Lire (M) Fin pour
Écrire (“donner P”) Fin pour
Lire (P)
Jusqu’à N<=10 et M<=10 et P<=10 Pour i de 1 à N faire
Pour i de 1 à N faire Pour j de 1 à P faire
Pour j de 1 à M faire Écrire (C[i,j])
Lire (A[i,j]) Fin pour
Fin pour Fin pour
Fin pour Fin

Exercice n° 4: (4 points)
Q1- Écrire un algorithme permettant de calculer le PGCD (le Plus Grand Commun Dénominateur) de deux
nombres en utilisant l’astuce suivante : soustraite le plus petit des deux entiers du plus grand jusqu'à ce qu’ils
soient égaux.
9 15
Exemple : soit à calculer le PGCD des deux nombres suivants : 9 et 15 soit et
PGCD PGCD
Donc : 15 ∶ 15 − 9 = 6 6−3= 𝟑
9 ∶ 9−6= 𝟑

3
NE RIEN ÉCRIRE ICI

9 15
D’où le PGCD des deux nombres 9 et 15 est 3 donc on peut écrire et
3 3
Q2- Traduire cet algorithme en langage C

ALGORITHME PROGRAMME EN C
#include <stdio.h>
Algorithme PGCD
Var a,b,x,y :entier int main()
Début {
Ecrire (“donner a”)
int a,b,,x,y;
Lire (a)
Ecrire (“donner b”) printf("Donner a ");
Lire (b) scanf("%d",&a) ;
xa printf("Donner b ");
yb scanf("%d",&b) ;
while (x !=y)
Tant que x<>y faire {
Si x>y alors
if(x>y)
xx-y
Sinon x -=y ;
yy-x else
Fin si y-=x ;
}
Fin tant que printf("le PGCD de a et b est égale à %d ",x);
Return (0) ;
Ecrire (“le PGCD de, “, a, “et“, b, “est“, x)
}
Fin
BON TRAVAIL

4
Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

DEVOIR SURVEILLÉ :
Algorithmique et base de donnée

NOM : ……………………….…………………. PRÉNOM : ……………….………..………………… Classe : GM………

Date : 09/12/2009 NOTE : / 20


GM: 11, 12, 13, 14, 15 & 16

Proposé par : A. TLILI, A. KROUT, Z. GRARI & I. BOUZAYENE A.U : 2009/2010

Exercice 1 :

Écrire un algorithme qui :


1. Lit un nombre entier « n » tel que 0 ≤ n.
2. Calcule fact tel que : fact = factorielle (n)
3. Affiche la valeur de fact.
Rappel : définition de factorielle (n)
Si n>0 Factorielle(n) = n * (n-1)*(n-2)*….*1,

Si n = 0 Factorielle (n) = 1,

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

Exercice 2 :
Reécrire les deux algorithmes suivant tout en corrigeant les éventuelles erreurs :
…………………………………………………………………
1. Algorithme aire_rectangle
Début
…………………………………………………………………
…………………………………………………………………
Longueur  17.5
Aire = Longueur * Largeur
…………………………………………………………………
Largeur 1.4
…………………………………………………………………
Fin …………………………………………………………………
…………………………………………………………………

1
DS algorithmique

…………………………………………………………………
2. Algorithme division
…………………………………………………………………
Var a, b, quotient, somme …………………………………………………………………
…………………………………………………………………
Début
…………………………………………………………………
Lire (a,b) …………………………………………………………………
…………………………………………………………………
Écrire (“saisir deux entiers“)
…………………………………………………………………
quotient  a div b …………………………………………………………………
…………………………………………………………………
reste  a mod b …………………………………………………………………
Écrire (‘‘le quotient est ’’, quotient ) …………………………………………………………………
…………………………………………………………………
Écrire (‘‘le reste est ’’, quotient ) …………………………………………………………………

Exercice 3 :
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme affectation
Var A, B, C : Entier
Début
A←5
B←3 A = ……
C←A+B B = ……
A←2 C = ……
C←B-A
Fin

Exercice 4 :
Écrire un algorithme qui demande l’age d’un enfant à l’utilisateur. ensuite il l’informe de sa catégorie :
 “Poussin” de 6 à 7 ans
 “Pupille” de 8 à 9 ans
 “Minime” de 10 à 11 ans
 “Cadet” après 12 ans
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
………………

2
Institut Supérieur Des Études Technologiques de Nabeul
Département Génie Mécanique

DEVOIR SURVEILLÉ :
Algorithmique et base de donnée

NOM : ……………………….…………………. PRÉNOM : ……………….………..………………… Classe : GM………

Date : 09/12/2009 NOTE : / 20


GM: 11, 12, 13, 14, 15 & 16

Proposé par : Adnene TLILI A.U : 2009/2010

Exercice 1 : 4 points

Écrire un algorithme qui :


1. Lit un nombre entier « n » tel que 0 ≤ n.
2. Calcule fact tel que : fact = factorielle (n)
3. Affiche la valeur de fact.
Rappel : définition de factorielle (n)
Si n>0 Factorielle(n) = n * (n-1)*(n-2)*….*1,

Si n = 0 Factorielle (n) = 1,
Algorithme Factorielle
Var fact,n, i:entier
Début
Repeter
Ecrire (‘’donner un nombre ‘’)
Lire (n)
Jusqu'à n>= 0
Si n=0 alors
fact1
Sinon
factn
Pour i de 1 à n-1 faire
fact  fact*(n-i)
Fin pour
Fin si
Ecrire (‘’Factorielle ‘’,n, ‘’ = ‘’,fact)
Fin

Exercice 2 : 8 points
Reécrire les deux algorithmes suivant tout en corrigeant les éventuelles erreurs :
Algorithme aire_rectangle
1. Algorithme aire_rectangle
Var Longueur, Largeur, Aire :réel
Début
Début
Longueur  17.5
Longueur  17.5
Aire = Longueur * Largeur
Largeur 1.4
Largeur 1.4
Aire  Longueur * Largeur
Fin
Fin
1
DS algorithmique

Algorithme division
2. Algorithme division
Var a, b, quotient, somme : entier
Var a, b, quotient, somme
Début
Début
Écrire (“saisir deux entiers“)
Lire (a,b)
Lire (a,b)
Écrire (“saisir deux entiers“)
quotient  a div b
quotient  a div b
reste  a mod b
reste  a mod b
Écrire (‘‘le quotient est ’’, quotient )
Écrire (‘‘le quotient est ’’, quotient )
Écrire (‘‘le reste est ’’, reste)
Écrire (‘‘le reste est ’’, quotient )
Fin

Exercice 3 : 3 points
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme affectation
Var A, B, C : Entier
Début
A←5
B←3 A=2
C←A+B B=3
A←2 C=1
C←B-A
Fin

Exercice 4 : 5 points
Écrire un algorithme qui demande l’age d’un enfant à l’utilisateur. ensuite il l’informe de sa catégorie :
 “Poussin” de 6 à 7 ans
 “Pupille” de 8 à 9 ans
 “Minime” de 10 à 11 ans
 “Cadet” après 12 ans

Algorithme categorie

Var age : entier

Début

Écrire (“saisir l’age de l’enfant“)

Lire (age)

Si age >= 6 et age <= 7 alors

Écrire (‘‘poussin’’)

Sinon Si age >= 8 et age <= 9 alors

Écrire (‘‘Pupille’’)

Sinon Si age >= 10 et age <= 11 alors


2
DS algorithmique
Écrire (‘‘Minime’’)

Sinon Si age >= 12 alors

Écrire (‘‘Cadet’’)

Sinon Écrire (‘‘N’appartient à aucune catégorie’’ )

Fin si

Fin si

Fin si

Fin si

Fin