Adloun

Rendre la monnaie

Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 2 — Variables, types et affectations · Les opérateurs arithmétiques

Énoncé

Un automate doit rendre une somme donnée en centimes (par exemple somme = 187) en utilisant le moins de pièces possible, avec des pièces de , , , , , et centime.

Écrire un programme qui affiche le nombre de pièces de chaque valeur, en n'utilisant que // et %.

Corrigé

somme = 187

p100 = somme // 100
somme = somme % 100      # ce qu'il reste à rendre
p50 = somme // 50
somme = somme % 50
p20 = somme // 20
somme = somme % 20
p10 = somme // 10
somme = somme % 10
p5 = somme // 5
somme = somme % 5
p2 = somme // 2
p1 = somme % 2

print(p100, "pièce(s) de 100")   # 1
print(p50, "pièce(s) de 50")     # 1
print(p20, "pièce(s) de 20")     # 1
print(p10, "pièce(s) de 10")     # 1
print(p5, "pièce(s) de 5")       # 1
print(p2, "pièce(s) de 2")       # 1
print(p1, "pièce(s) de 1")       # 0

Vérification : . ✓

Le schéma se répète : // donne le nombre de pièces de la valeur courante, % met à jour ce qu'il reste à rendre. Il est essentiel de réaffecter somme après chaque pièce — sinon chaque ligne repartirait de la somme entière et le compte serait faux.

Remarque. Prendre à chaque fois la plus grosse pièce possible donne ici le minimum de pièces, mais ce n'est pas vrai pour tous les jeux de pièces imaginables.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.