programmation Java (école d'ingénieur) · Chapitre 8 · Exercice de TD
Rendre la monnaie
Encapsulation, membres de classe et paquets · niveau 2
Énoncé
Écrire une énumération Piece des huit pièces en euros (de 2 € à 1 centime), chacune avec sa valeur en centimes, déclarées de la plus grande à la plus petite. Écrire une méthode qui rend une somme en prenant à chaque fois la plus grande pièce possible, et l'appliquer à 476 et à 65 centimes.
Corrigé
enum Piece {
DEUX_EUROS(200), UN_EURO(100), CINQUANTE(50), VINGT(20), DIX(10), CINQ(5), DEUX(2), UN(1);
private final int centimes;
Piece(int centimes) { this.centimes = centimes; }
int getCentimes() { return centimes; }
}
public class Ex8Monnaie {
// Rend la somme avec, à chaque étape, la plus grosse pièce possible.
static void rendre(int somme) {
System.out.print("rendre " + somme + " c :");
for (Piece p : Piece.values()) { // values() : dans l'ordre de déclaration
int n = somme / p.getCentimes();
if (n > 0) {
System.out.print(" " + n + " x " + p);
somme -= n * p.getCentimes();
}
}
System.out.println();
}
public static void main(String[] args) {
rendre(476);
rendre(65);
}
}
rendre 476 c : 2 x DEUX_EUROS 1 x CINQUANTE 1 x VINGT 1 x CINQ 1 x UN
rendre 65 c : 1 x CINQUANTE 1 x DIX 1 x CINQ
Le programme repose sur l'ordre de déclaration des pièces, de la plus grande à la plus petite. Pour les pièces en euros, cette méthode gloutonne donne toujours le plus petit nombre de pièces ; ce n'est pas vrai pour n'importe quel système de pièces (avec des pièces de 1, 3 et 4, rendre 6 donnerait au lieu de ).
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.