
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
Algorithmique.
Applications aux langages C, C++ et Java
Jean-Michel LÉRY
ISBN : 978-2-7440-7672-5
Exercices supplémentaires
Chapitre 1 – Les traitements logiques
L’exercice 1 montre comment obtenir un arrondi par une solution analytique.
Exercice 1 : Conversion des francs en euros
Énoncé
Écrivez l’algorithme qui convertit en euros une somme exprimée en francs. Le résultat en euros sera arrondi à la
deuxième décimale. Le taux de conversion est de 6,55957 francs pour un euro, et la seule fonction algorithmique
dont on dispose pour effectuer l’arrondi est
partie_entière(x)
qui retourne la valeur entière strictement inférieure
au nombre réel
x
(la partie entière de 2,6 est 2). Le problème sera décomposé en deux sous-problèmes : trouver
comment obtenir un arrondi entier à partir de la fonction
partie_entière()
, puis généraliser le calcul pour qu’il
effectue un arrondi à la deuxième décimale.
1. Faites l’analyse du problème de l’arrondi entier en travaillant sur des exemples de nombres réels. Pour
cela, mettez en correspondance une série de nombre réels (2,0, puis 2,1, puis 2,2, etc.) avec leur
arrondi entier connu, et déduisez-en le calcul algorithmique générique qui permet de passer de la
valeur réelle à son arrondi.
2. Modifiez ce calcul pour effectuer l’arrondi à 2 décimales près, et écrivez l’algorithme de conversion des
francs en euros qui utilise cette méthode.
Solution
1. Cet exercice montre que l’analyse des données est très importante. La plupart des développeurs
auront tendance à proposer une solution basée sur leurs connaissances techniques, en comparant la
partie décimale à la valeur 0,5. Si la partie décimale est inférieure à 0,5, l’arrondi correspond à la
partie entière ; sinon, l’arrondi correspond à la partie entière augmentée de la valeur 1. Cette solution
construite autour d’un test s’écrit :
pent partie_entière(x)
pdéci x - pent
Si (pdéci < 0,5) alors
Arrondi pent
Sinon
Arrondi pent + 1
FinSi
Or un test est plus coûteux en temps d’exécution qu’un simple calcul arithmétique. Il est donc préférable
d’étudier les données avant de se lancer dans une solution technique, comme le propose la figure 1.1.
En prenant une suite de nombres réels consécutifs, et en mettant en correspondance leur arrondi entier
connu, on peut faire le constat suivant. L’arrondi change à partir du nombre dont la décimale est 0,5 (ce
nombre est 2,5 pour la suite présentée). Si on ajoute simplement 0,5 à la valeur centrale 2,5, on obtient le
résultat attendu (schéma de gauche de la figure). Généralisons ce calcul en ajoutant 0,5 à tous les nombres
réels présentés et regardons le résultat obtenu (schéma de droite de la figure 1.1). Ce résultat est presque
celui qui est attendu, à la partie décimale près. Il suffit donc de ne conserver que la partie entière. Le calcul
précédent basé sur un test se réécrit ainsi beaucoup plus simplement :
Arrondi partie_entière(x+0,5)