EFM - Algorithme - 2014-2015
I) Partie théorique (9/40 points)
- Citer quelques avantages des fonctions et procédures. (2 pts)
- Quelle est la différence entre une structure et un tableau ? (2 pts)
- On considère l’algorithme suivant :
DEBUT Variables N, I, Q, S: Entier Lire(N) I ← N S ← 0 TantQue I ≠ 0 faire Q ← I Mod 10 S ← S*10 + Q I ← I / 10 FinTanQue Afficher (S) FIN.
- Dérouler cet algorithme pour N = 52 puis pour N = 123 et donner la valeur de S pour chacune des 2 valeurs de N. (4 pts)
- Que fait cet algorithme ? (1 pt)
II) Partie pratique (31/40 points)
Exercice 1 (6 pts)
Ecrire un algorithme qui lit la taille N d'un tableau T du type entier, puis permet de remplir le tableau par des valeurs entrées au clavier et de supprimer les éléments pairs du tableau.
Afficher ensuite le tableau après suppression ainsi que le nombre d’éléments supprimés.
Exemple :
Tableau initiale.
4 |
8 |
5 |
3 |
9 |
6 |
8 |
1 |
3 |
Tableau après suppression des données paires et compression des éléments restants.
5 |
3 |
9 |
1 |
3 |
Exercice 2 (7 pts)
Ecrire un algorithme qui demande à l'utilisateur de taper des entiers positifs et qui calcule et affiche la moyenne de leur multiplication. Lorsqu'on tape une valeur négative, le programme affiche RESSAYER et demande de retaper une valeur. Lorsqu'on tape 0, cela signifie que le dernier entier a été tapé. On affiche alors la moyenne. Si le nombre d'entiers tapés est égal à 0, on affiche ERREUR.
Exemple :
8 9 10 567 2 6 11 0
On affiche
(8 *9* 10* 567* 2 *6 *11) / 7= 7698240
Exercice 3 (9 pts):
Les diviseurs propres d’un entier N sont tous les entiers autres que N qui le divisent.
Exemple : les diviseurs propres de 10 sont 1, 2 et 5
Un Triplet d’entiers (A, B, C) est dit amiables si et seulement si la somme des diviseurs propres de l’un est égale à la somme des diviseurs propres des deux autres.
Exemple :
Le Triplet (5, 8, 10) est un Triplet d’entier amiables, en effet :
N |
Diviseurs propres |
Somme Diviseurs propres |
8=1+7 |
5 |
1 |
1 |
|
8 |
1, 2, 4 |
7 |
|
10 |
1, 2, 5 |
8 |
- Ecrire une fonction qui reçoit comme paramètre trois entiers positifs (A,B,C) et retourne 1 si les trois entiers forment un Triplet d’entiers Amiables, dans le cas contraire la fonction doit retourner 0. (7pts)
- Créer un programme principal qui demande 3 entiers A, B et C et qui vérifie si le Triplet (A,B,C) est amiable. Le programme doit utiliser la fonction précédente. (2pts)
Exercice 4 (9pts) :
Ecrire un algorithme qui permet de :
- Lire une matrice de L lignes et C colonnes (1,5 pt)
- Afficher ensuite cette matrice ligne par ligne. (1,5 pt)
- Calculer et afficher la somme des éléments de la diagonale principale (2 pts)
- Afficher un message qui précise si elle est triangulaire supérieure ou pas. Une matrice est triangulaire supérieure si toutes les valeurs au-dessous de la première diagonale sont égales à zéro. (4 pts)
Exemple de matrice triangulaire supérieure 4 x 4 :
5 |
3 |
-61 |
9 |
Dans cet exemple, les éléments au-dessous de la première diagonale sont tous égaux à zéro et donc, c’est une matrice triangulaire supérieure. |
0 |
2 |
11 |
4 |
|
0 |
0 |
15 |
-7 |
|
0 |
0 |
0 |
3 |
I) Partie théorique :
-
Les fonctions et procédures permettent de :
- Eviter la répétition ;
- Faciliter la maintenance du code ;
- Partager et réutiliser le code.
- la différence entre une structure et un tableau est que le tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits. Une structure permet de regrouper des éléments de type différent tels que des entiers et des chaînes de caractères.
-
Algorithme :
-
Trace
Pour N=52:
Q
S
I
0
52
2
2
5
5
25
0
Résultat : S=25
Pour N=123:
Q
S
I
0
123
3
3
12
2
32
1
1
321
0
Résultat: S=321
- Cet algorithme permet d’inverser un nombre (afficher son miroir).
-
II) Partie pratique :
Exercice 1 :
DEBUT Entier : i, j, n, T[30], c = 0 Afficher("Entrer la taille du tableau: ") Lire(n)
Afficher("Donner les éléments du tableau : ") Pour i ← 0 à n-1 Lire( T[i] ) Fin pour Pour i ← 0 à n-1 Si(T[i] Mod 2 = 0) Pour j ← i à n-2 T[ j ] ← T[ j+1 ] Fin pour n ← n - 1 i ← i - 1 c ← c + 1 Fin si Fin pour Afficher("Le tableau après suppression : ") Pour i ← 0 à n-1 pas de 1 Afficher( T[i] ) Fin pour Afficher("Le nombre des éléments supprimés est : ", c) FIN
Exercice 2 :
DEBUT Entier n = 0, a = -1 Réel m , p ← 1 Tant que( a ≠ 0) Afficher("Donner un nombre positif : ") Lire(a) Si( a < 0 ) Afficher("Nombre négatif ! Ressayer") Sinon si( a > 0 ) n ← n+1 p ← p*a Fin si Fin Tant que Si( n = 0 ) Afficher("Erreur") Sinon m ← p/n Afficher("Le produit des nombres : ",p) Afficher("La moyenne de leur multiplication est : ",m) Fin si FIN
Exercice 3
Entier SommeDiviseur(Entier A) Début Entier i, s = 0 Pour i ← 1 à a/2 Si(a MOD i = 0) s ← s + i Fin si Fin pour Renvoyer(s) Fin Entier Amiable(Entier x, Entier y, Entier z) Début Entier a ,b , c a ← SommeDiviseur (x) b ← SommeDiviseur (y) c ← SommeDiviseur (z) Si(a = b + c OU b = a + c OU c = a + b) Renvoyer(1) Sinon Renvoyer(0) Fin si Fin DEBUT PROGRAMME Entier X ,Y ,Z ,d Afficher("Entrer trois entiers : ") Lire(X,Y,Z) d ← Amiable(X,Y,Z) Si( d = 1 ) Afficher("Le triplet est amiable") Sinon Afficher("Le triplet n’est pas amiable") Fin si FIN
Exercice 4 :
Début du programme Entier i ,j ,L ,T[30][30] ,S , a //Question 1 Afficher("Entrer le nombre de lignes et de colonnes (L=C): ") Lire(L) Afficher("Remplissage de la matrice : ") Pour i ← 0 à L-1 Pour j ← 0 à L-1 Lire(T[i][j]) Fin pour Fin pour //Question 2 Afficher("Les éléments de la matrice: ") Pour i ← 0 à L-1 Pour j ← 0 à L-1 Afficher(T[i][j]) Fin pour Afficher(RETOUR A LA LIGNE) Fin pour //Question 3 S ← 0 Pour i ← 0 à L-1 S ← S + T[i][i] Fin pour
Afficher("la somme des éléments de la diagonale principale est: ", S) //Question 4 a ← 1 Pour i ← 0 à L-1 Pour j ← 0 à i-1 Si(T[i][j] ≠ 0) a ← 0 Fin si Fin pour Fin pour Si(a=1) Afficher("La matrice est triangulaire supérieure") Sinon Afficher("La matrice n’est pas triangulaire supérieure") Fin si Fin du programme
Nom | Taille | Clics | Téléchargements |
Examen de Fin de Module - TPS - Session Janvier 2015 | 333.08 Ko | 3978 | Télécharger |