Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →