Vous êtes sur la page 1sur 8

Université Mohammed Seddik BENYAHIA – JIJEL –

Faculté des Sciences Exactes et Informatique 2020 / 2021


Département de Mathématiques et Informatique

Algorithmique et Structures de Données 1


Devoir Maison – Corrigé type
Exercice 1 (5 pts) : Avantages Du Paiement En Ligne
Q1) (2 pts) Algorithme BonusPaiementEnLigne
Var Montant, Duree, Bonus : Entier
Début
Répéter
Lire( Montant ) (0.25 pt)
Jusqu’à Montant > 0 (0.25 pt)
Duree  Montont Div 50 // 50 DA par jour (0.25 pt)
Bonus  Montant Div 500 // 1 jour supplémentaire pour chaque 500 DA (0.25 pt)
// Bonus  Duree Div 10 // 1 jour supplémentaire pour chaque 10 jours
Si Bonus > 6 Alors
Bonus  6 (0.50 pt)
FSi
Duree  Duree + Bonus (0.25 pt)
Ecrire(" Nombre total de jours d’bonnement = ", Duree ) (0.25 pt)
Fin
Q2) (1 pt) Algorithme BonusEtPromotion
Var Montant, Duree, Bonus : Entier
Début
Répéter
Lire( Montant )
Jusqu’à Montant > 0
Duree  Montont Div 50 // 50 DA par jour
Bonus  Montant Div 500 // 1 jour supplémentaire pour chaque 500 DA
// Bonus  Duree Div 10 // 1 jour supplémentaire pour chaque 10 jours
Si Bonus > 6 Alors
Bonus  6
FSi
// Si Montant ≥ 7500 Alors // Si le client paie plus de 5 mois ( 5 * 1500 = 7500 DA)
Si Duree ≥ 150 Alors // Si le client paie plus de 5 mois ( 5 * 30 = 150 jours) (1 pt)
Bonus  Bonus + 30 // 1 mois gratuit
FSi

Page 1 / 8
Duree  Duree + Bonus
Ecrire(" Nombre total de jours d’bonnement = ", Duree )
Fin
Q3) (2 pts) Algorithme Conversion
Var D, M, J, H, Min, S : Entier
Début
Répéter
Lire( D ) // Durée d’abonnement en secondes (0.25 pt)
Jusqu’à D > 0 (0.25 pt)
Min  D Div 60 // Conversion des secondes en minutes
H  Min Div 60 // Conversion des minutes en heures
J  H Div 24 // Conversion des heures en jours
M  J Div 30 // Conversion des jours en mois (0.25 pt)
S  D Mod 60 // Les secondes qui ne peuvent pas être converties en minutes. (0.25 pt)
Min  Min Mod 60 // Les minutes qui ne peuvent pas être converties en heures. (0.25 pt)
H  H Mod 24 // Les heures qui ne peuvent pas être converties en jours. (0.25 pt)
J  J Mod 30 // Les jours qui ne peuvent pas être converties en mois. (0.25 pt)
Ecrire(D, " secondes d’abonnement = ", M, " Mois ", J, " Jours ", H, " Heures ", Min, " Minutes ", S, " Secondes ") (0.25 pt)

Fin
Solution 2
Algorithme Conversion
Var D, M, J, H, Min, S : Entier
Début
Répéter
Lire( D ) // Durée d’abonnement en secondes (0.25 pt)
Jusqu’à D > 0 (0.25 pt)
M  D Div 2592000 // 1 mois = 30 jours x 24 heures x 60 minutes x 60 secondes(0.25 pt)
S  D Mod 2592000 // Les secondes qui ne peuvent pas être converties en mois.
J  S Div 86400 // 1 jour = 24 heures x 60 minutes x 60 secondes (0.25 pt)
S  S Mod 86400 // Les secondes qui ne peuvent pas être converties en jours.
H  S Div 3600 // 1 heure = 60 minutes x 60 secondes (0.25 pt)
S  S Mod 3600 // Les secondes qui ne peuvent pas être converties en heures.
Min  S Div 60 // 1 minute = 60 secondes (0.25 pt)
S  S Mod 60 // Les secondes qui ne peuvent pas être converties en minutes.(0.25 pt)
Ecrire(D, " secondes d’abonnement = ", M, " Mois ", J, " Jours ", H, " Heures ", Min, " Minutes ", S, " Secondes ") (0.25 pt)

Fin

Page 2 / 8
Exercice 2 (3.5 pts) : Somme De Puissances (3.5 points)
Q1) (1.5 pts) Algorithme Somme1
Var R, N, I, P, S : Entier
Début
Répéter
Lire(R, N) (0.25 pt)
Jusqu’à (R > 0) et (N > 0) // Solution 2
S0 SR // parce que N ≥ 1
P1 (0.25 pt) PR
Pour I  1 à N faire (0.25 pt) Pour I  2 à N faire
PP*R (0.25 pt)
SS+P (0.25 pt)
FPour
Ecrire("La somme = ", S) (0.25 pt)
Fin
Q2) (2 pts) Algorithme Somme2
Var X, XpN, R, N, I, P : Entier
S : Réel
Début
Répéter
Lire(R, N)
Lire( X ) (0.25 pt)
Jusqu’à (R > 0) et (N > 0) et (X > 0) (0.25 pt)
// Calcul de X^N (X à la puissance N)
XpN  X (0.25 pt)
Pour I  2 à N faire (0.25 pt)
XpN  XpN * X (0.25 pt)
FPour
S0
P1
Pour I  1 à N faire
PP*R
S  S + P / XpN (0.25 pt)
XpN  XpN / X (0.25 pt)
FPour
Ecrire("La somme = ", S) (0.25 pt)
Fin
Page 3 / 8
Exercice 3 (3.5 pts) : Nombres Proniques
Q1) (1.5 pts) Algorithme NombresProniquesQ1
Var N, I, S, K : Entier
Début
Répéter
Lire( N ) (0.25 pt)
Jusqu’à N ≥ 0
S0
K  0 // Combien de nombres pairs (0.25 pt) // Initialisations
I  2 // Le nombre pair suivant
TQ S < N Faire (0.25 pt)
SS+I
KK+1 (0.25 pt) // Incrémentations
II+2 // Le nombre pair suivant
FTQ
Si S = N Alors
Ecrire( N, " est un nombre pronique, K = ", K )
Sinon (0.50 pt)
Ecrire( N, " n’est un nombre pronique, K = ", K )
FSi
Fin
Q2) (2 pts) Algorithme NombresProniquesQ2
Var NB, Cpt, N, I, S, K : Entier
Début
Répéter
Lire( NB ) // NB : Le nombre de nombres proniques à afficher (0.25 pt)
Jusqu’à NB > 0 (0.25 pt)
N0 // Le 1er nombre à tester (0.25 pt)
Cpt  0 // Compteur des nombres proniques déjà affichés (0.25 pt)
Ecrire(" Les ", NB, " premiers nombres proniques sont : ")
TQ Cpt < NB Faire (0.25 pt)
S0
K  0 // Combien de nombres pairs
I  2 // Le nombre pair suivant
TQ S < N Faire
SS+I
Page 4 / 8
KK+1
II+2 // Le nombre pair suivant
FTQ
Si S = N Alors
Ecrire( N, " est un nombre pronique, K = ", K ) (0.25 pt)
Cpt  Cpt + 1 (0.25 pt)
FSi
NN+1 (0.25 pt)
FTQ
Fin
Solution 2
Algorithme NombresProniquesQ2
Var N, I, S, K : Entier
Début
Répéter
Lire( N ) // N : Le nombre de nombres proniques à afficher
Jusqu’à N > 0
S0
K  0 // Combien de nombres pairs
I  2 // Le nombre pair suivant
Ecrire(" Les ", N, " premiers nombres proniques sont : ")
TQ K < N Faire
Ecrire( S, K ) // Ou Ecrire( S, " est un nombre pronique, K = ", K )
SS+I
KK+1
II+2 // Le nombre pair suivant
FTQ
Fin
Exercice 4 (7 pts) : Somme Des Diviseurs Propres
Q1) (3 pts) Algorithme SuiteAliquote
Var N, NCopie, S, I, Cpt : Entier
Début
Répéter
Lire(N) (0.25 pt)
Jusqu’à N > 1
Ecrire( N ) // Afficher le 1er terme
Page 5 / 8
NCopie  N
Cpt  0
Répéter
S1
Pour I  2 à (N DIV 2) faire
Si N MOD I = 0 Alors (0.50 pt)
SS+I
FSi
FPour
NS (0.25 pt)
Cpt  Cpt +1 (0.25 pt)
Ecrire( N ) // Afficher les termes calculés (0.25 pt)
Jusqu’à (N = 1) OU (N = NCopie) (0.50 pt)
Si N = 1 Alors
Si Cpt = 1 Alors
Ecrire(NCopie, " Est premier")
FSi
Sinon // N est sociable
Si Cpt = 1 Alors
Ecrire(N, " Est parfait")
Sinon (1 pt)
Si Cpt = 2 Alors
Ecrire(N, " Est amical")
Sinon
Ecrire(N, " Est sociable d’ordre ", Cpt)
FSi
FSi
FSi
Fin
Q2) (4 pts) Déroulement :
(0.50 pt)- Si N = 496, alors la suite obtenue est : 496, 496  Affichage = 496 est un nombre parfait.
(0.50 pt)- Si N = 462, alors la suite obtenue est : 562, 284, 220, 284, 220, …  Problème boucle infinie :
la suite ne revient pas sur 1 ni sur 462, elle répète indéfiniment les valeurs 284 et 220.
(0.50 pt)- Si N = 563, alors la suite obtenue est : 563, 1  Affichage = 563 est un nombre premier.

Page 6 / 8
(0.50 pt)- Si N = 564, alors la suite obtenue est : 564, 780, 1572, 2124, 3336, 5064, 7656, 14032, 13186,
7694, 3850, 5078, 2542, 1490, 1210, 1184, 1210, 1184, … Problème boucle infinie : la suite ne revient
pas sur 1 ni sur 564, après 13 termes, elle répète indéfiniment les valeurs 1210 et 1184.
(0.50 pt)- Si N = 565, alors la suite obtenue est : 565, 119, 25, 6, 9, 4, 3, 1  Affichage = // rien
(0.50 pt)- Si N = 608, alors la suite obtenue est : 608, 496, 496, 496, …  Problème boucle infinie : la
suite ne revient ni sur 1 ni sur 608, elle répète indéfiniment la valeur de 496.
(1 pt) Solution 1 (Solution efficace)
Pour résoudre le problème rencontré, il faut utiliser un tableau et sauvegarder chaque nouvelle valeur
calculée si elle n’existe pas encore dans le tableau. Si elle existe déjà dans le tableau, on doit s’arrêter. La
suite continue jusqu’à ce qu’elle revienne sur l’une des valeurs sauvegardées dans le tableau ou le tableau
soit entièrement rempli.
(1 pt) Solution 2 (Solution simple)
Mais comme le tableau a une taille limitée, on peut s’en passer de son utilisation. Il y aura certainement des
nombres dont la suite ne peut pas se tenir dans le tableau.
Pour faire simple, il suffit de limiter l’ordre de la suite à un nombre maximum de termes. Si l’ordre T
dépasse une valeur (de 40 termes) par exemple, on doit s’arrêter.
L’algorithme de la question Q1 doit être modifié comme suit :
- On crée une constante TMAX :
Const TMAX = 40 // 40 termes maximum, par exemple.
- La boucle Répéter qui permet de créer la suite devient :
Répéter

Jusqu’à (N = 1) OU (N = NCopie) OU (Cpt > TMAX)
- Afficher un message qu’il y a un problème : On doit remplacer le message :
Ecrire(N, " Est sociable d’ordre ", Cpt)

Par
Si Cpt > TMAX Alors
Ecrire(" Problème : L’ordre de la suite dépasse ", TMAX)
Sinon
Ecrire(N, " Est sociable d’ordre ", Cpt)
FSi

Barème : 1 point : Soins portés à la copie : propreté, indentation, commentaires (explications), …

*** Fin du corrigé-type ***


Page 7 / 8
Remarque : Le barème est sur 20 points pour faciliter la correction des copies. La note
finale sera ramenée sur 10 points. C’est-à-dire, elle sera divisée par 2.

Rappel de la méthode d’évaluation

(Passage extrait du PV du CP du 04/01/2021)

Page 8 / 8

Vous aimerez peut-être aussi