Adloun

Vérifier à la main que le rendu glouton de 67 centimes donne quatre…

Application directe du cours · niveau 1 (application) · NSI (première), chapitre 8 — Dichotomie, voisins et gloutons · Voisins et gloutons

Énoncé

Vérifier à la main que le rendu glouton de centimes donne quatre pièces. Que se passe-t-il si l'on passe les pièces en ordre croissant ? sans pièce de ?

Corrigé


EURO = [200, 100, 50, 20, 10, 5, 2, 1]
assert rendu_monnaie(67, EURO) == [50, 10, 5, 2]
assert rendu_monnaie(0, EURO) == []

try:
    rendu_monnaie(10, [1, 2, 5])        # croissant
    assert False
except AssertionError as e:
    assert "decroissant" in str(e)

try:
    rendu_monnaie(10, [5, 2])           # sans piece de 1
    assert False
except AssertionError as e:
    assert "piece de 1" in str(e)

Les deux préconditions protègent de deux échecs très différents. En ordre croissant, l'algorithme rendrait dix pièces de : correct mais absurde. Sans pièce de , il resterait un reste non nul et la postcondition sum(rendu) == somme serait violée — sur avec [5, 2], il n'existe d'ailleurs aucune décomposition.

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.