serie exercices ALGO

publicité
MPSI/Ecole Préparatoire
2014-2015
Exercices d’ALGORITHMIQUE
Exercice 1 : Ecrire un programme qui boucle à l’infini
a) En utilisant la structure TANT QUE
b) En utilisant la structure REPETER … JUSQUE
c) En utilisant POUR
Exercice 2 : Écrire un sous-programme qui affiche le codage d’un entier quelconque et donne
le nombre de bits à 1.
Exercice 3 : Écrire une fonction qui retourne le plus grand commun diviseur (pgcd) de deux
nombres entiers positifs par l’algorithme d’Euclide suivante:
Exercice 4 : Écrire une fonction qui calcule la racine carrée entière d’un nombre entier positif
par soustractions successives des nombres impairs.
Exemple : Racine de 51
Il y a eu 7 soustractions en tout, donc la racine entière de 51 est 7.
Exercice 5 : Soit C np est défini pour 0  p  n , par
- C np  C np1  C np11 pour p différent de 0 et n
- C n0  C nn  1
Trouver un programme permettant d’effectuer le calcul de C np .
Exercice 6 : La date de Pâques correspond au 1er dimanche après la première pleine lune qui
suit l'équinoxe de printemps. Soient les données suivantes :
a = Année modulo 19
b = Année modulo 4
c = Année modulo 7
d = (19 * a + 24) mod 30
e = (2 * b + 4 * c + 6 * d + 5) mod 7
alors
n = 22 + d + e
n est le numéro du jour à partir du 1er mars correspondant au dimanche de Pâques.
Dr KADJO Tanon Lambert
Département Mathématiques et Informatique INP-HB / Yamoussoukro
www.kadjo-lambert.c4.cf
MPSI/Ecole Préparatoire
2014-2015
Réalisez un programme qui calcule la date de Pâques à partir de l'année.
Exercice 7 : Un candidat obtient 5 notes Système (Coeff 5), Algo (coeff 3), HTML (Coeff 3),
Java (coeff 4), BDD (coeff 4), à un examen. Ces notes sont stockées dans un tableau NOTES.
Pour déterminer sa réussite, on calcule une moyenne pondérée à l'aide de 5 coefficients
stockés dans un tableau COEFF.
1) Ecrire l'algorithme qui calcule à l'aide d'une boucle, la moyenne pondérée d'un
candidat.
2) Compléter cet algorithme à l'aide d'une deuxième boucle pour calculer le résultat de 30
candidats.
Exercice 8 : Écrire un algorithme qui permet de déplacer un pion sur un damier.
L’ordinateur demande à l’utilisateur dans quelle case se trouve son pion (quelle ligne, quelle
colonne). On met en place un contrôle de saisie afin de vérifier la validité des valeurs entrées.
Ensuite, on demande à l’utilisateur quel mouvement :
- 0 (en haut à gauche)
- 1 (en haut à droite)
- 2 (en bas à gauche)
- 3 (en bas à droite).
Si le mouvement est impossible (i.e. on sort du damier), on le signale à l’utilisateur et on lui
propose des positions et le jeu s’arrête. Sinon, on déplace le pion et on affiche le damier
résultant, en affichant un « O » pour une case vide et un « X » pour la case où se trouve le
pion.
NB : On considère l’instruction LDA « Afficher (" \n") » , l’instruction permettant d’aller
sur une nouvelle ligne.
Exercice 9 : L’un des plus vieux code secret est le chiffre de César. Il consiste en un décalage
circulaire de l’alphabet utilisé. Le tableau ci-dessous présente le codage obtenu pour un
décalage de 4 positions de l’alphabet. Le mot “BAC” est codé “FEG”.
Dr KADJO Tanon Lambert
Département Mathématiques et Informatique INP-HB / Yamoussoukro
www.kadjo-lambert.c4.cf
MPSI/Ecole Préparatoire
Lettre à coder
Lettre après codage
A
E
B
F
C
G
D
H
E
I
F
J
G
K
2014-2015
…
…
Y
C
Z
D
On stocke dans le tableau CHAINE_A_CODER (respectivement le tableau
CHAINE_A_DECODER), la chaîne de caractères à encoder (respectivement la chaine de
caractères à décoder) à avec les critères suivants :
- vous demandez à l’utilisateur de saisir la chaine.
- Cette chaîne fait une longueur définie par la variable LONGUEUR_CHAINE.
- Cette chaîne de caractères ne doit contenir que des majuscules. Assurez-vous qu’elle l’est.
Dans cet exercice, on ne codera que les 26 lettres de l’alphabet. Les autres caractères ne le
seront pas et seront donc fournis tels quels.
1) Quel est le code correspondant à la chaine EXAMEN si le décalage est de 4 positions.
2) Proposez un programme qui encode CHAINE_A_CODER et affiche le résultat. Le
nombre de lettre de décalage est demandé à l’utilisateur.
3) Proposez un programme qui décode CHAINE_A_DECODER et affiche le résultat. Le
nombre de lettre de décalage est demandé à l’utilisateur.
Exercice 10 : Tri bulle
1. Ecrire un algorithme illustrant le tri bulle
2. Dérouler le tri bulle sur le tableau suivant, en donnant le détail des différentes étapes
Notes 45
11
2
0
3
2
0
17
11
Exercice 11 : Méthode de Tri
On a un tableau [1..N] de réels dont on sait qu’ils sont tous compris entre 0 et 1, et qu’ils sont
différents les uns des autres. On se propose de les trier par la méthode suivante :
-
On sépare ceux qui sont plus petits que 1/2 (et on les met à gauche du tableau) et ceux
qui sont plus grand s ou égaux à 1/2 (vont à droite).
-
On prend ceux qui sont plus petits que 1/2 , et on les sépare en plus petits et plus grands
que 1/4. Les plus petits que 1/4 seront séparés en plus petits et plus grands que 1/8.
Ceux qui sont plus petits que 1/2 mais plus grand que ¼ seront séparés en plus petits et
plus grands que 3/8.
Les plus grands que 1/2 seront séparés en plus grands et plus petits que 3/4 etc. jusqu’à
aboutir à un tableau trié.
-
1) A quel moment peut-on savoir que le tableau est trié ?
2) Programmer cette méthode.
3) Comment peut-on appliquer cette méthode sur un tableau de réels
quelconques.
Dr KADJO Tanon Lambert
Département Mathématiques et Informatique INP-HB / Yamoussoukro
de valeurs
www.kadjo-lambert.c4.cf
MPSI/Ecole Préparatoire
2014-2015
Exercice 12 : Soit l’algorithme suivant :
Procédure Bolt (Tab[1..1000] : tableau de numériques, id_debut : entier, id_fin : entier)
id_pivot : entier
Debut
Si (id_debut < id_fin) Alors
id_pivot  Partitionner (Tab, id_debut, id_fin)
Bolt (Tab, id_debut, id_pivot)
Bolt (Tab, id_pivot+1, id_fin)
FinSi
FinProcedure
Fonction Partitionner (Tab[1..1000] : tableau de numériques, id_debut : entier, id_fin :
entier) : numerique
pivot, i, j : numérique
test : booléen
Debut
pivotTab[id_debut]
i  id_debut - 1
j  id_fin+1
test  VRAI
Tant Que (test)
Repeter
j j-1
Jusqu’à (Tab[j]<= pivot)
Repeter
i  i+1
Jusqu’à (Tab[i]>=pivot)
Si (i < j) Alors
Echanger (Tab, i, j)
Sinon
test  FAUX
FinSI
FinTantQue
Retourner (j)
FinFonction
1)
2)
3)
4)
Donner le pseudo-code de la procédure Echanger
Faire tourner sur l’exemple [9, 4, 2, 8, 5] l’algorithme Bolt.
Faire tourner sur l’exemple [2, 4, 5, 8, 9] l’algorithme Bolt.
Si l’on veut appliquer cet algorithme sur le tableau [2, 2, 2, 2, 2], quelle valeur
retourne Partitionner, pour son premier appel ?
Dr KADJO Tanon Lambert
Département Mathématiques et Informatique INP-HB / Yamoussoukro
www.kadjo-lambert.c4.cf
MPSI/Ecole Préparatoire
2014-2015
Exercice 13 : Ecrire un algorithme qui affiche les informations ci-dessus d’un employé dans
un cadre en lui indiquant le temps restant pour atteindre la date de retraite. On suppose que la
durée de fonction est estimée à 30 ans d’exercice.
Nom : KONE
Prenoms : Mamadou
Date d’embauche : 12/07/1978
Sexe : M
Exercice 14. Créer un tableau EMPLOYES qui contiendra les informations sur les 50
employés d’une entreprise (Matricule, Nom, Salaire, Etat_civil, Date_Naiss,
Date_embauche), le remplir puis afficher le nombre d’employés dont le salaire est compris
entre 250 000 FCFA et 500 000FCFA.
Afficher la liste des employés ayant plus de 20 ans de services à la date de 01/01/2010, ainsi
que le nombre d’années de services.
Exercice 15 : Écrivez une fonction ayant en paramètres le nombre d’heures effectuées par un
salarié et son salaire horaire, qui retourne sa paie hebdomadaire.
Les heures sup. (au-delà de 35 heures) sont payées à 150%.
Dr KADJO Tanon Lambert
Département Mathématiques et Informatique INP-HB / Yamoussoukro
www.kadjo-lambert.c4.cf
Téléchargement