AVANT PROPOS
C’est un groupe formé essentiellement de meilleurs
étudiants de nos groupes d’étude et d’encadrement qui se sont
fixés plusieurs objectifs dont le premier est celui du partage de la
connaissance en Informatique et en mathématiques. Ainsi, pour
atteindre notre premier objectif, nous organisons des formations
essentiellement gratuites pour partager le peu que nous
connaissons avec les autres. Car la connaissance, c’est comme un
chandelier, sa lumière ne diminue pas s‘il allume un autre
chandelier.
Pour faire partie de Wissen, l’étudiant doit démontrer son
savoir-faire et son amour pour la connaissance pendant les cours
d’encadrement etc… Pour les externes désirant intégrer Wissen,
ils doivent passer pas un test, car ne suivant pas régulièrement
les cours avec nous, c’est le seul moyen d’apprécier leur savoir-
faire et leur amour pour la connaissance.
Le cerveau est bien une richesse que nous avons tous en
commun, mais c’est son utilisation qui distingue les hommes
…Parfois, il n’existe pas de gens plus intelligents que les autres,
mais c’est le travail qui nous différencie. Pour bâtir haut, il faut
creuser profond et tu seras fort dans ce que tu te donnes.
Il y a une naissance en toute connaissance, Thucydide a dit
: « Avoir des connaissances sans les partager, c’est se mettre au
niveau de celui qui n’a pas d’idées ». Wissen Corporation est là
pour assurer votre formation, votre encadrement suivant vos
désirs.
[Link] 2
INTRODUCTION
Ce livre vous présente plus de 50 exercices. Les questions sont
essentiellement des interrogations, examens et tps des années antérieures.
L’objectif poursuivi n’est pas de rendre l’étudiant faible ou paresseux
mais plutôt de mettre à sa disposition un outil d’aide pour la préparation des
évaluations et la bonne compréhension du cours. La plupart des exercices ont
été résolus avec LARP.
LARP (Logiciel d’Algorithmes et de Résolution des Problèmes) a été conçu
par Marco Lavoie. Il permet le prototypage rapide d'algorithmes. Un point im-
portant à signaler est que le langage LARP est polymorphe contextuel. Ce terme
signifie qu'un algorithme LARP n'a pas à définir au préalable ses variables en
spécifiant explicitement leur type. C’est pourquoi vous remarquerez l’absence
de la déclaration de variables dans les résolutions.
Il y a une naissance en toute connaissance, Thucydide a dit : « Avoir des
connaissances sans les partager, c’est se mettre au niveau de celui qui n’a pas
d’idées ». L’objectif que je poursuis n’est pas de se prévaloir supérieur à vous
qui me lisez, mais de partager le peu que je connais à ceux qui veulent. Si
vous lisez ce livre pour chercher de failles, vous les trouverez certainement
mais si vous le lisez pour apprendre, vous apprendrez surement : Vous
trouverez ce que vous cherchez. Je ne suis en compétition avec personne.
L’œuvre humaine n’est jamais parfaite et celle-ci ne fait pas exception,
ainsi vos remarques et suggestions seront les bienvenues et m’aideront à
améliorer les éditions futures.
Bonne lecture
Aimé DIUMI DIKOLO
+243 81 083 46 16
adiumidik@[Link]
[Link]
Aimé DIUMI DIKOLO 3
Ceci est un extrait du livre Algorith-
mique, exercices résolus. Vos suggestions
et remarques nous seront très utiles pour
améliorer la version finale du livre
[Link] 4
EXERCICE 1
Soit la saisie par un utilisateur à partir du clavier d’un nombre n par exemple
et de sa puissance m.
a) Ecrire une fonction pour ce problème
b) Proposer un GNS
(Examen Logique de programmation S1 2015-2016)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Entrez le nombre"
LIRE n
ECRIRE "Entrez la puissance"
Lire m
p=PUISSANCE(n,m)
ECRIRE n," exposant ", m, " vaut ", p
FIN
\\ Module auxiliaire PUISSANCE
ENTRER n,m
p=1
POUR i = 1 JUSQU'À m FAIRE
p=p*n
FINPOUR
RETOURNER p
Cette fonction pouvait aussi être écrite comme suit :
FONCTION PUISSANCE ( n,m)
p=1
POUR i = 1 JUSQU'À m FAIRE
p=p*n
FINPOUR
RETOURNER p
FIN FONCTION
Aimé DIUMI DIKOLO 5
EXERCICE 2
Ecrire un algorithme qui calcule et affiche la table de multiplication par un
nombre tapé au clavier. Faites attention au cas de zéro (0)
(Interro Logique de programmation 2016-2017)
Résolution (LARP)
\\ Module principal
DÉBUT
RÉPÉTER
ECRIRE "Entrez le nombre"
LIRE n
SI n=0 ALORS
ECRIRE "Le nombre doit être différent de zéro"
FINSI
JUSQU'À n != 0
ECRIRE "Voici la table de multiplication par ",n
POUR i = 0 JUSQU'À 20 FAIRE
ECRIRE i, " X ", n, " = ", i*n
FINPOUR
FIN
Illustrations de l’exécution
[Link] 6
Aimé DIUMI DIKOLO 7
EXERCICE 3
Soit un nombre n et la puissance p introduit par un utilisateur à partir du
clavier. Ecrire un algorithme et un GNS qui calcule la puissance de ce nombre
(Interro Logique de programmation 2016-2017)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Entrez le nombre"
LIRE n
ECRIRE "Entrez la puissance"
LIRE p
r=1
POUR i = 1 JUSQU'À p FAIRE
r=r*n
FINPOUR
ECRIRE n, " exposant ", p, " vaut ", r
FIN
EXERCICE 4
Deux entiers naturels strictement positifs m et n sont dits nombres amis si et
seulement si :
• La somme des diviseurs de m sauf lui-même est égale à n ;
• Et la somme des diviseurs de n sauf lui-même est égale à m.
Exemple :
220 et 284 sont deux nombres amis. En effet :
D284={1,2,4,71,142,284}
D220={1,2,4,5,10,11,20,22,44,55,110,220}
D284 et D220 sont respectivement les ensembles de tous les diviseurs de
284 et de 220.
284=1+2+4+5+10+11+20+22+44+55+110
220=1+2+4+71+142
[Link] 8
Ecrire un algorithme qui permet de déterminer puis d’afficher si deux
entiers naturels donnés m et n sont amis ou non.
(Examen Logique de programmation S2 2016-2017)
Résolution (LARP)
\\ Module principal
DÉBUT
RÉPÉTER
ÉCRIRE "Entrez le premier nombre"
LIRE m
SI m<=0 ALORS
ECRIRE "Le nombre doit être strictement supérieur à 0, recommencez"
FINSI
JUSQU'À m>0
RÉPÉTER
ÉCRIRE "Entrez le deuxième nombre"
LIRE n
SI n<=0 ALORS
ECRIRE "Le nombre doit être strictement supérieur à 0, recommencez"
FINSI
JUSQU'À n>0
\\ Recherche et sommation des diviseurs de m
somme_m=0
POUR i = 1 JUSQU'À m-1 FAIRE
SI m %i=0 ALORS
somme_m=somme_m+i
FINSI
FINPOUR
\\Recherche et sommation des diviseurs de n
somme_n=0
POUR i = 1 JUSQU'À n-1 FAIRE
SI n %i=0 ALORS
Aimé DIUMI DIKOLO 9
somme_n=somme_n+i
FINSI
FINPOUR
SI somme_m=n ET somme_n=m ALORS
ÉCRIRE "Les deux nombres sont amis"
SINON
ECRIRE "Les deux nombres ne sont pas amis"
FINSI
FIN
Illustrations de l’exécution
[Link] 10
EXERCICE 5
Ecrire un algorithme pour la facturation mensuelle des abonnés d’une
entreprise de fourniture de l’électricité sachant qu’elle a trois catégories des
abonnés : catégorie A (consommation domestique), catégorie B(consommation
industrielle) et catégorie C(institution étatique).
Cette facturation dépend aussi du milieu d’implantation (zone X, zone Y, zone
Z).
- Pour la catégorie A, si le payement est effectué avant le 20 du mois, il y
a réduction de 15%, si elle vit dans la zone X, si après le 20, il y a
pénalité de 10% si elle vit dans la zone Y et aucune sanction ou avantage
si elle vit dans la zone Z quel que soit le moment de payement.
- Pour la catégorie B, il n’y pas d’avantage même si elle paye avant le 20,
mais après cette date, quel que soit sa zone d’habitation, elle doit payer
la pénalité de 25%.
- Pour la catégorie C, quel que soit le moment de payement ou la zone
d’habitation, il y a toujours une réduction de 5%.
(Examen Logique de programmation S1 2013-2014)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Entrez le montant"
LIRE m
ECRIRE "Entrez la catégorie du client"
LIRE cat
ECRIRE "Entrez la zone d'implantation"
LIRE zone
ECRIRE "Entrez le jour de paiement"
LIRE jour
SI cat="A" ALORS
SI jour<20 et zone="X" ALORS
m=m-0.15*m
SINON SI jour>20 ET zone="Y" ALORS
m=m+0.10*m
SINON
Aimé DIUMI DIKOLO 11
m=m
FINSI
SINON SI cat="B" ALORS
SI jour<20 ALORS
m=m+0.25*m
SINON
m=m
FINSI
SINON
m=m-0.05*m
FINSI
ECRIRE "Le montant à payer est ", m
FIN
EXERCICE 6
Soit un arrangement 𝐴𝑝𝑛 = (𝑛−𝑝)!
𝑛!
Ecrire un sous algorithme permettant de calculer celui-ci.
(Examen Logique de programmation S1 2018-2019)
Résolution (LARP)
Utilisons une fonction supplémentaire qui va calculer la factorielle
\\ Module principal
DÉBUT
RÉPÉTER
ECRIRE "Entrez la valeur de n"
LIRE n
SI n<=0 ALORS
ECRIRE "La valeur de n doit être strictement positif, recommencez"
FINSI
JUSQU'À n>0
RÉPÉTER
ECRIRE "Entrez la valeur de p"
[Link] 12
LIRE p
SI p>n ALORS
ECRIRE "p doit être inférieur ou égal à n"
FINSI
JUSQU'À p<=n
a=Arrangement(n,p)
ECRIRE "L'arrangement de ",n," éléments pris ", p, " à ",p, " vaut ", a
FIN
\\ Module auxiliaire Factorielle
ENTRER n
f=1
SI n=0 OU n=1 ALORS
f=1
SINON
POUR i = 1 JUSQU'À n FAIRE
f=f*i
FINPOUR
FINSI
RETOURNER f
\\ Module auxiliaire Arrangement
ENTRER i,j
n=Factorielle(i)
p=Factorielle(j)
k=Factorielle(i-j)
a=n/(p*k)
RETOURNER a
Aimé DIUMI DIKOLO 13
EXERCICE 7
Soit un nombre n et sa puissance p fournis au clavier par un utilisateur.
Ecrire deux modules vus au cours permettant de calculer la puissance de ce
nombre.
(Examen Logique de programmation S1 2018-2019)
EXERCICE 8
Un nombre entier p (différent de 1) est dit premier si ses seuls diviseurs positifs
sont 1 et p. Ecrivez un algorithme qui effectue la lecture d’un entier p et
détermine si cet entier est premier ou non.
(Recueil Logique de programmation 2018-2019)
Résolution (LARP)
\\ Module principal
DÉBUT
RÉPÉTER
ECRIRE "Entrez un nombre différent de 1"
LIRE p
SI p=1 ALORS
ECRIRE "Le nombre doit etre différent de 1, recommencez"
FINSI
JUSQU'À p!=1
test="VRAI"
POUR i = 2 JUSQU'À p-1 FAIRE
SI p %i =0 ALORS
test="FAUX "
FINSI
FINPOUR
SI test="VRAI" ALORS
ECRIRE "Le nombre ",p, " est premier"
SINON
ECRIRE "Le nombre ", p, "n'est pas premier"
FINSI
[Link] 14
FIN
Illustrations de l’exécution
EXERCICE 9
Un nombre parfait est un entier positif supérieur à 1, égal à la somme de ses
diviseurs. On ne compte pas comme diviseur le nombre lui-même.
Exemple : 6 est un nombre parfait puisque : 6= 1+2+3
a) Donner un nombre parfait différent de 6
b) Ecrire la conception de l’algorithme qui nous dit si un nombre entier n
est parfait ou non
(Recueil Logique de programmation 2018-2019)
Aimé DIUMI DIKOLO 15
Résolution (LARP)
a) 6, 28, 496
b) \\ Module principal
DÉBUT
RÉPÉTER
ECRIRE "Entrez un nombre différent de 1"
LIRE n
SI n=1 ALORS
ECRIRE "Le nombre doit etre différent de 1, recommencez"
FINSI
JUSQU'À n!=1
somme=0
POUR i = 1 JUSQU'À n-1 FAIRE
SI n % i=0 ALORS
somme=somme+i
FINSI
FINPOUR
SI somme=n ALORS
ECRIRE "Le nombre ", n, " est un nombre parfait"
SINON
ECRIRE "Le nombre ", n, " n'est pas un nombre parfait"
FINSI
FIN
[Link] 16
EXERCICE 10
On désire écrire un algorithme qui affiche l’image miroir n’ d’un nombre entier
n. Le mot miroir d’un mot donné est le mot obtenu en lisant le mot donné à
partir de la fin.
Exemple : l’image miroir du nombre n=86431 est n’=13468.
(Recueil Logique de programmation 2018-2019)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Saisir un nombre"
LIRE n
\\on convertit n en un tableau contenant chaque chiffre avec la fonction
ENCARACTERES
nombre=ENCARACTERES(n)
t=LONGUEUR(nombre)
\\Permutation
POUR i = 1 JUSQU'À PLANCHER(t/2) FAIRE
intermediaire=nombre[i]
nombre[i]=nombre[t-i+1]
nombre[t-i+1]= intermediaire
FINPOUR
\\On reconvertit le container en nombre
nombreInverse=ENCHAINE(nombre)
ECRIRE "Le nombre miroir de ",n, " est ", nombreInverse
FIN
Illustration de l’exécution
Aimé DIUMI DIKOLO 17
EXERCICE 11
Ecrire sur votre calculatrice un algorithme qui simule des lancers de dé (jeu
de six) jusqu’à obtenir un 6 et compte combien il a fallu de lancers de dés pour
obtenir ce 6.
(Recueil Logique de programmation 2018-2019)
Résolution (LARP)
\\ Module principal
DÉBUT
n=0
RÉPÉTER
ECRIRE "Appuyer sur une touche pour lancer le dé"
LIRE k
nombre=ALEATOIRE(1,6)
SI nombre <>6 ALORS
ECRIRE "Vous avez obtenu ",nombre
FINSI
n=n+1
JUSQU'À nombre=6
ECRIRE "Vous avez obtenu 6 après ",n, " essais"
FIN
Illustrations de l’exécution
[Link] 18
Aimé DIUMI DIKOLO 19
EXERCICE 12
Les élections législatives en RDC, obéissent à la règle suivante :
Lorsque l’un des candidats obtient plus de 50% des suffrages, il est élu dès le
premier tour.
En cas de deuxième tour, peuvent participer uniquement les candidats ayant
obtenu au moins 12,5% des voix au premier tour.
Vous devez écrire un algorithme qui permette la saisie des scores de quatre
candidats au premier tour. Cet algorithme traitera ensuite le candidat numéro
1 (et uniquement lui) : il dira s’il est élu ou battu, s’il se trouve en ballottage
favorable (il participe au second tour arrivé en tête à l’issue du premier tour)
ou défavorable (il participe au second tour sans avoir été en tête au premier
tour).
(Recueil Logique de programmation 2018-2019)
EXERCICE 13
Ecrire pour votre calculatrice un algorithme qui demande deux réels positifs
(en premier le plus petit, en second le plus grand) et qui affiche tous les entiers
compris entre ces deux nombres.
(Recueil Logique de programmation 2018-2019)
Résolution (LARP)
\\ Module principal
DÉBUT
RÉPÉTER
ECRIRE "Saisir le premier nombre"
LIRE n1
ECRIRE "Saisir le deuxième nombre"
LIRE n2
SI n2<=n1 ALORS
ECRIRE "Le premier nombre doit être inférieur au second, recommencez"
FINSI
JUSQU'À n1<n2
ECRIRE "Voici les nombres compris entre ",n1, " et ", n2
[Link] 20
POUR i = n1 JUSQU'À n2 FAIRE
ECRIRE i
FINPOUR
FIN
Illustration de l’exécution
EXERCICE 14
Ecrire un algorithme qui définit une structure de données Heure permettant
de représenter une heure au format hh/mm/ss, puis écrire les fonctions
suivantes :
a) Conversion d’un élément de type Heure en nombre de secondes (entier)
b) Conversion d’un nombre de secondes (entier) en élément de type Heure
c) Addition de deux éléments de type Heure.
(Recueil Logique de programmation 2018-2019)
EXERCICE 15
Ecrire un algorithme qui à partir d’une date donnée (jour de la semaine,
numéro du jour, mois, année) fabrique la date du lendemain.
(Recueil Logique de programmation 2018-2019)
Aimé DIUMI DIKOLO 21
EXERCICE 16
Ecrivez un algorithme qui réalise l’organisation d’un tableau en ne testant
qu’une seule fois la couleur de chaque élément. On donne un tableau de n
éléments qui ont chacun une couleur soit rouge, soit blanc. On veut obtenir
un tableau avec deux zones : à gauche tous les éléments rouges, à droite tous
les éléments blancs. Essayez de minimiser le nombre moyen des échanges
d’éléments. Calculez ce nombre.
(Examen Logique de programmation S1 2015-2016)
EXERCICE 17
Soient les tableaux des données suivants :
A(MxN) B(PxK)
1 2 12 0 7 1 2 83 8 9
4 4 0 1 8 5 6 5 8 0
8 4 5 5 7 5 7 8 1 10
11 1 8 8 9 11 12 0 7 8
7 7 8 0 1 14 1 3 7 10
A. CALCUL
a) Proposer un algorithme qui calcule la TRACE de A et celle de B
b) Faites un algorithme qui effectue le produit de ces deux matrices
B.
En quoi un algorithme est appelé procédure de calcul ? Referez-vous à A pour
répondre à cette question ?
(TP Logique de programmation 2017)
EXERCICE 18
Pour une délibération et une distribution automatique, rapide des côtes, le
jury demande aux étudiants de lui proposer un algorithme (en procédural).
a) Donner l’algorithme qui prend en compte tous les paramètres avant de
délibérer et de donner les résultats aux concernés.
b) Quels langages de programmation seraient les meilleurs pour
l’algorithme. Expliquez-vous ?
(TP Logique de programmation 2017)
[Link] 22
EXERCICE 19
Ecrivez un algorithme qui saisit un texte à mettre dans une variable chaine
ch puis chercher toutes les occurrences des lettres de l’alphabet et les met
dans un tableau OCC. Les indices des éléments de OCC vont de ‘A’ à ‘Z’. On
suppose que le texte n’utilise pas de caractères accentués. Le programme
affiche ensuite chaque lettre suivie de ses occurrences dans le texte.
On rappelle que les occurrences d’une lettre signifient le nombre d’apparitions.
(Examen Logique de programmation S2 2016-2017)
EXERCICE 20
On donne deux tableaux linéaires A et B de dimensions respectives n et m. On
demande d’écrire un algorithme pour la fusion de A et B. Déterminer sa
complexité et trier le tableau après fusion.
(Examen Logique de programmation S1 2013-2014)
EXERCICE 21
Utiliser l’algorithme tri bulle pour trier le vecteur : 8,15,20,15,19,22,7,50,2
(Examen Logique de programmation S1 2013-2014)
EXERCICE 22
Ecrire un algorithme qui fusionne deux tableaux A et B multidimensionnel
A B
(Examen Logique de programmation S1 2018-2019)
EXERCICE 23
Soit A un tableau linéaire de 200 réels. Rechercher sa valeur maximale et le
rang de celle-ci dans le tableau.
(Recueil Logique de programmation 2018-2019)
Aimé DIUMI DIKOLO 23
EXERCICE 24
Ecrivez un algorithme qui lit un tableau d’entiers den éléments et donne la
plus grande et la plus petite valeur de ce tableau.
(Recueil Logique de programmation 2018-2019)
EXERCICE 25
Ecrivez un algorithme qui lit la taille d’un tableau n, le tableau T, une valeur
X et indique ensuite si l’élément x appartient ou non au tableau T.
(Recueil Logique de programmation 2018-2019)
EXERCICE 26
Dérouler les algorithmes de tri bulle et de recherche dichotomique vus au
cours d’algorithmique pour les appels suivants :
Variables notes : tableau d’entiers
Notes → 5 17 4 20 9 12 15 8
Tri bulle (notes)
Recherche Dichotomique (15, notes)
Recherche Dichotomique (0, notes)
(Recueil Logique de programmation 2018-2019)
EXERCICE 27
Ecrire un algorithme permettant de renvoyer la plus petite valeur d’une
matrice carrée.
NB. : montrer au préalable le remplissage du tableau.
(Recueil Logique de programmation 2018-2019)
EXERCICE 28
Soit A(nxm) une matrice réelle donnée. Ecrire un algorithme qui calcule sa
transposée B(mxn), qui effectue la multiplication de A par B et qui cherche le
plus grand élément de la matrice C=AxB.
(Recueil Logique de programmation 2018-2019)
[Link] 24
EXERCICE 29
Soit le tableau multidimensionnel suivant :
8 5 1 11
9 2 28 5
3 12 8 6
13 7 9 9
Ecrire un algorithme permettant le calcul du nombre d’occurrences d’un
élément donné dans ce tableau, en prenant par exemple « 9 », l’algorithme va
retourner la phrase « La valeur 9 est reprise 3 fois dans le tableau »
(Recueil Logique de programmation 2018-2019)
EXERCICE 30
Ecrire l’algorithme effectuant le décalage des éléments d’un tableau.
Exemple :
Tableau initial
D E C A L A G E
E D E C A L A G
(Recueil Logique de programmation 2018-2019)
EXERCICE 31
Soit un tableau de 100 réels. Rechercher sa valeur maximale et le rang de
celle-ci dans le tableau.
(Recueil Logique de programmation 2018-2019)
Aimé DIUMI DIKOLO 25
EXERCICE 32
Lors du concours d’admission à la faculté de sciences, on souhaite garder les
noms des candidats, leur âge, leur école de provenance, leur pourcentage
obtenu aux examens d’Etat, l’année d’obtention du diplôme d’état, leur
adresse et le numéro de leur carte d’identité. Lors de l’enregistrement, on
attribue un numéro comme à chaque étudiant.
Ecrire un algorithme
1. Ecrire le sous-programme qui permet d’entrer et afficher les données de
tous les candidats
2. Ecrire le sous-programme qui lance la recherche sur un étudiant x
(l’algorithme nous permet de voir uniquement les informations sur l’étudiant
recherché)
On tape le code de l’étudiant mais l’algorithme nous affiche toutes les
informations enregistrées sur l’étudiant correspondant au code saisi.
3. Ecrire l’algorithme qui fait appel aux sous programmes précédents
(TP ALGORITHMIQUE 2019-2020)
EXERCICE 33
Nous avons environ 750 étudiants et pour chaque étudiant nous voulons avoir
les informations suivantes : le matricule, le nom complet, le groupe, les notes
de ses 3 travaux dirigés, 2 travaux pratiques, et la note du laboratoire, sa
moyenne et son rang.
Ecrire deux sous-programmes, le premier permet de rentrer toutes les
informations concernant un étudiant, toutes ses notes de l’année au cours
d’algorithmique et second qui calcule sa moyenne
(TP ALGORITHMIQUE 2019-2020)
EXERCICE 34
Ecrire un algorithme qui fait le calcul de côtes des étudiants et délibère les cas
des étudiants selon les critères de délibération de l’université de Kinshasa.
Affiche les listes des étudiants par catégories (Distinction, Satisfaction,
Assimilé aux ajournés, Ajournés, Assimilés aux non Admissibles à la faculté,
Non admissibles à la faculté) selon les résultats de la délibération.
(TP ALGORITHMIQUE 2019-2020)
[Link] 26
EXERCICE 35
Ecrire un algorithme qui permet de remplir un tableau T par n caractère (avec
6 ≤ 𝑛 ≤ 30) et de répartir ces n caractères sur trois caractères et les afficher :
TL : un tableau de lettres
TC : un tableau de chiffres
TS : un tableau de symboles
Exemple :
Soit n=10
T
On doit obtenir les tableaux suivants :
TL H K R d
TC 4 2 6
TS ! } $
(Examen de Logique de programmation 2018-2019)
EXERCICE 36
Proposer un algorithme principal permettant de remplir deux tableaux P et Q
de taille maximales (n<=10000) par des réels. Puis de ranger respectivement
les éléments positifs de P puis de Q dans un tableau TPOS. Ensuite calculer
puis afficher la moyenne arithmétique des éléments de TPOS.
N.B. La solution doit comporter au moins deux modules ou sous-algorithmes.
(Examen de Logique de programmation 2018-2019)
Aimé DIUMI DIKOLO 27
EXERCICE 37
Soit une matrice A(N, M) d’entiers (N<=30 et M<=30), écrire un algorithme qui :
- Calcule et sauvegarde la somme de chaque colonne
- Détermine la position Jmin de la somme minimale et la position Jmax
de la somme maximale
- Permute les deux colonnes d’indice Jmin et Jmax de la matrice A si
Jmin>Jmax
(Examen Logique de programmation 2018-2019)
EXERCICE 38
Vous avez à votre disposition un fichier texte quelconque (pas trop gros).
Ecrivez un algorithme qui analyse ce fichier texte, et mémorise dans un
tableau dynamique l’emplacement exact de chacun des mots (compte en
nombre de caractères à partir du début). Lorsqu’un même mot apparait
plusieurs fois, tous ses emplacements doivent être mémorisés dans le
tableau : chaque valeur de votre tableau doit donc être une zone
d’emplacements. Et présenter un sous module qui compte les occurrences de
chacune des lettres de l’alphabet dans ce texte (on simplifiera le problème en
ne tenant pas compte des lettres accentuées)
(Examen Logique de programmation 2018-2019)
EXERCICE 39
Soient deux vecteurs d’entiers triés V1 (N entiers N<=1000) et V2 (M entiers
M<=1000). Ecrire une procédure qui fusionne ces deux vecteurs dans un
vecteur V3 trié dans répétition de valeurs identiques
(TP de Logique de programmation 2018-2019)
EXERCICE 40
Ecrire un algorithme qui lit deux mots et qui détermine s’ils sont anagrammes.
Sachant qu’un mot est dit anagramme d’un autre mot s’ils utilisent (formés
par) les mêmes lettres.
(TP de Logique de programmation 2018-2019)
[Link] 28
EXERCICE 41
A l’occasion de la journée de la femme, la société FERAZA accorde une prime
de 20% du salaire des agents dont le sexe est « F ». Présenter l’algorithme et
l’ordinogramme correspondant à ce problème.
(TP Algorithmique 2019-2020)
EXERCICE 42
Concevoir un ordinogramme qui évalue les racines de l’équation du second
degré : 𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0 𝑜ù 𝑎 ≠ 0. Ces racines sont données par l’expression :
−𝑏±√𝑏 2 −4𝑎𝑐
𝑥= 2𝑎
Le discriminant de cette équation est ∆= 𝑏 2 − 4𝑎𝑐
- Si le ∆ est négatif, l’équation ne possède pas de solutions réelles
−𝑏
- Si le ∆= 0, il n’y a qu’une solution réelle, 𝑥 = 2𝑎
- Si le ∆ est positif, l’expression donne deux solutions réelles
(TP Algorithmique 2019-2020)
EXERCICE 43
Ecrire une fonction qui prend en paramètres un tableau de taille NB_MAX,
son nombre d’éléments n<NB_MAX, un entier 𝑖 ≤ 𝑛 et un entier m. La fonction
doit insérer l’élément m en position i dans le tableau (sans supprimer
d’élément)
(Examen S1 Algorithmique 2019-2020)
EXERCICE 44
Un programmeur qui souhaite utiliser une fonction a besoin de connaitre
a. Les types de variables internes à la fonction
b. Le corps de la fonction
c. Le nom de la fonction
d. La signature de la fonction
e. Aucune bonne réponse
(Examen S1 Algorithmique 2019-2020)
Aimé DIUMI DIKOLO 29
EXERCICE 45
Ecrire une fonction qui utilise une recherche dichotomique aux fins de savoir
si un tableau de n nombres entiers contient un certain nombre a. On suppose
que le tableau est trié dans l’ordre croissant.
(Examen S1 Algorithmique 2019-2020)
EXERCICE 46
Ecrire un algorithme qui permette de connaitre ses chances de gagner au
tiercé, quarté, quinté et autres impôts volontaires. On demande à l’utilisateur
le nombre de chevaux partants, et le nombre de chevaux joués. Les deux
messages affichés devront être : Dans l’ordre : une chance sur X de gagner
dans le désordre : une chance sur Y de gagner. X et Y sont donnés par la
formule suivante, si n est le nombre de chevaux partants et p le nombre de
chevaux joués :
𝑋 = 𝑛!/(𝑛 − 𝑝) ! 𝑌 = 𝑛! /(𝑝! ∗ (𝑛 − 𝑝)!)
(Examen S1 Algorithmique 2019-2020)
EXERCICE 47
Ecrire un algorithme qui cherche dans une liste de noms et d’adresses,
l’adresse d’une personne à partir de son nom.
(Examen S1 Algorithmique 2019-2020)
EXERCICE 48
En général, on ne peut pas modifier les variables passées en paramètres d’une
fonction (passée par valeur). Cependant, pour un tableau, on peut modifier les
éléments d’un tableau passé en paramètres. Ceci est lié au fait que le type
tableau est en fait une adresse à quelle se
trouve……………………………………………………………………..(A compléter)
(Examen S1 Algorithmique 2019-2020)
[Link] 30
EXERCICE 49
2
Soit la fonction {3𝑥 + 𝑥 + 1 𝑠𝑖 𝑥 ≥ 1
0 𝑆𝑖𝑛𝑜𝑛
Ecrire une fonction en langage algorithmique qui prend en paramètre en entier
𝑛 𝑛 𝑛 𝑛
n et calcule la somme 𝑈𝑛 = 𝑓(𝑛) + 𝑓 (2) + 𝑓 ( 4) + 𝑓 ( 8) + 𝑓 (16) + ⋯
Dans cette somme, les divisions sont des divisions euclidiennes. On arrêtera
la somme lorsque la valeur de f calculée est nulle.
(Examen S1 Algorithmique 2019-2020)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Saisir la valeur de n"
LIRE n
i=0
Un=0
RÉPÉTER
x=n/2^i
SI x>=1 ALORS
f=3*x^2+x+1
SINON
f=0
FINSI
Un=Un+f
i=i+1
JUSQU'À f=0
ECRIRE "La somme Un vaut ", Un
FIN
Illustrations de l’exécution
Aimé DIUMI DIKOLO 31
EXERCICE 50
Déterminons les erreurs de la fonction suivante :
Fonction fabriqueAssistant (d : date, nom : chaine) : Assistant
Variable : d1, d2 : Date
et : Assistant ;
Début
𝑑1 ⟵ 𝑑2 ;
𝑒𝑡 ← 𝑛𝑒𝑤 𝐴𝑠𝑠𝑖𝑠𝑡𝑎𝑛𝑡 (𝑛𝑒𝑤 𝐶ℎ𝑎𝑖𝑛𝑒 (∗ 𝐾𝑦𝑙𝑖𝑎𝑛 ∗), 𝑑1);
Fin
(Examen S1 Algorithmique 2019-2020)
[Link] 32
EXERCICE 51
Le compilateur (ou traducteur) ne s’occupe pas des commentaires dans un
algorithme (programme) parce que
………………………………………………………………………….(A compléter)
(Examen S1 Algorithmique 2019-2020)
EXERCICE 52
Soit un tableau comportant, disons, 20 valeurs. Ecrire un algorithme
saisissant un nombre au clavier, et qui informe à l’utilisateur de la présence
ou l’absence de la valeur saisie dans le tableau.
(Examen S1 Algorithmique 2019-2020)
EXERCICE 53
Ecrire un algorithme qui demande à l’utilisateur de saisir un numéro de mois
compris entre 1 et 12, qui le prévient si le nombre <1 ou >12 et lui demande
alors d’entrer à nouveau une valeur.
1) Cette demande est répétée tant que l’entrée est incorrecte
2) L’utilisateur n’a droit qu’à 3 essais.
(Examen S1 Algorithmique 2019-2020)
Résolution (LARP)
\\ Module principal
DÉBUT
ECRIRE "Saisir un numéro de mois entre 1 et 12"
LIRE n
i=1
TANTQUE (n<1 OU n>12) ET i<3 FAIRE
ECRIRE "numéro incorrect, recommencez"
LIRE n
i=i+1
FINTANTQUE
SI i>=3 ALORS
ECRIRE "Vous avez épuisé le nombre d'essais"
SINON
Aimé DIUMI DIKOLO 33
ECRIRE "bravo, numéro correct"
FINSI
FIN
Illustrations de l’exécution
On peut améliorer le programme de sorte que si l’utilisateur entre un numéro
correct, que l’algorithme affiche le nom du mois correspondant
\\ Module principal
DÉBUT
ECRIRE "Saisir un numéro de mois entre 1 et 12"
LIRE n
i=1
TANTQUE (n<1 OU n>12) ET i<3 FAIRE
[Link] 34
ECRIRE "numéro incorrect, recommencez"
LIRE n
i=i+1
FINTANTQUE
SI i>=3 ET (n<1 OU n>12) ALORS
ECRIRE "Vous avez épuisé le nombre d'essais"
SINON
SI n=1 ALORS
ECRIRE "ce numéro correspond au mois de Janvier"
SINON SI n=2 ALORS
ECRIRE "ce numéro correspond au mois de Février "
SINON SI n=3 ALORS
ECRIRE "ce numéro correspond au mois de Mars"
SINON SI n=4 ALORS
ECRIRE "ce numéro correspond au mois d'Avril "
SINON SI n=5 ALORS
ECRIRE "ce numéro correspond au mois de Mai "
SINON SI n=6 ALORS
ECRIRE "ce numéro correspond au mois de Juin "
SINON SI n= 7 ALORS
ECRIRE "ce numéro correspond au mois de Juillet"
SINON SI n=8 ALORS
ECRIRE "ce numéro correspond au mois d'Aout "
SINON SI n=9 ALORS
ECRIRE "ce numéro correspond au mois de Septembre"
SINON SI n= 10 ALORS
ECRIRE "ce numéro correspond au mois d'Octobre "
SINON SI n=11 ALORS
Aimé DIUMI DIKOLO 35
ECRIRE "ce numéro correspond au mois de Novembre "
SINON SI n=12 ALORS
ECRIRE "ce numéro correspond au mois de Décembre"
FINSI
FINSI
FIN
Illustration de l’exécution
EXERCICE 54
a) Un algorithme peut être traduit en un programme exécutable par un
ordinateur grâce à ………………………………………………….(A compléter)
b) L’affectation consiste à attribuer
……………………………………………………….(A compléter)
(Examen S1 Algorithmique 2019-2020)
EXERCICE 55
Ecrire une fonction qui lit une chaîne de caractères au clavier et compte le
nombre d’espaces contenus dans cette chaîne.
(Examen S1 Algorithmique 2019-2020)
EXERCICE 56
La caractéristique fondamentale d’un langage d’analyse algorithmique est :
a. La souplesse b. La précision c. La modularité d. La clarté e. Le non
ambiguïté
(Examen S1 Algorithmique 2019-2020)
[Link] 36
EXERCICE 57
Dire en une phrase la différence entre les algorithmes SUP et INF
Algorithme SUP
𝑠𝑖 𝑎 > 0 𝑎𝑙𝑜𝑟𝑠 𝑠𝑖 𝑏 > 0 𝑎𝑙𝑜𝑟𝑠 𝑐 ← 𝑎 + 𝑏
𝑠𝑖𝑛𝑜𝑛 𝑐 ← 𝑎 − 𝑏
𝑓𝑖𝑛𝑠𝑖
𝑓𝑖𝑛𝑠𝑖
Algorithme INF
𝑠𝑖 𝑎 > 0 𝑎𝑙𝑜𝑟𝑠 𝑠𝑖 𝑏 > 0 𝑎𝑙𝑜𝑟𝑠 𝑐 ← 𝑎 + 𝑏
𝑓𝑖𝑛𝑠𝑖
𝑠𝑖𝑛𝑜𝑛 𝑐 ← 𝑎 − 𝑏
𝑓𝑖𝑛𝑠𝑖
(Examen S1 Algorithmique 2019-2020)
Aimé DIUMI DIKOLO 37