Bonjour
j'ai beaucoup de difficulté avec les algorithmes et j'ai un gros devoir sur sa prévu dans un mois et mon professeur a donner des exercices a faire pour s'entraînez mais je bloque sur l'un si vous pourriez me donnez des conseils ou des réponse cela m'aiderais beaucoup.
voici l'exercice:
Rendre la monnaie
Deux montants sont saisis en euros : le prix à payer et la somme donnée par le client.
L'algorithme doit déterminer les coupures et pièces à rendre au client en précisant leur nature et leur nombre,
et ceci de façon optimale.
On remarquera que la plus grosse coupure (500 euros) ne peut jamais faire partie de la monnaie rendue ! La
diérence entre la somme donnée et le prix doit toujours être inférieure à 500 euros (sinon le client pouvait
donner moins).
On se limite donc aux pièces de 0,01 ; 0,02 ; 0,05 ; 0,10 ; 0,20 ; 0,50 ; 1 et 2 euros et aux coupures de 5 ; 10 ;
20 ; 50 ; 100 et 200 euros.
Cet algorithme sera implémenté sous le nom TP_05_1.py.
Note : lorsqu'on travaille avec des nombres réels, des problèmes d'arrondi peuvent apparaître. On aura donc
intérêt à travailler avec des nombres entiers, en centimes d'euros, bien que les saisies doivent se faire en euros.
merci d'avance pour vos réponse
bonjour
il y a toujours la possibilité de faire une flopée de tests pour descendre de la plus grosse "coupure" jusqu'à la pièce de 1€.
fastidieux.
je pense davantage à la création d'une variable liste (indices)...
salut
c'est rien qu'une esquisse sous vba excel pour avoir une idée
Bonjour ,
en python (comme suggéré dans l'énoncé)
A améliorer éventuellement pour par exemple limiter l'affichage à ce qui est à rendre .
** image supprimée **
bonjour
merci beaucoup pour vos réponse je vais essayer et je revient vers vous si j'ai encore un soucis ou si j'ai réussis.
J'ai essayée un truc mais a la fin cela ne m'affiche pas le nombre de pièce ou billet rendu
prix = float(input("saisir le montant a payer:"))
montant = float(input("saisir montant donné par le client: "))
prix = int(prix * 100)
montant = int(montant * 100)
monnaie = montant-prix
compteur=0
liste=[20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1]
for i in liste:
compteur = monnaie //i
monnaie = monnaie % 1
print(compteur,("billet(s)" if i >=500 else "piece(s)"), "de", i, "centimes")
"modulo 1" n'a pas beaucoup de sens ... tous les entiers sont divisibles par 1 donc le reste est toujours nul
N % 1 vaut toujours 0
@akanecrystal Je suis surpris que personne ne t'ai répondu .
Je n'avais pas pu te répondre après mon exclusion et n'était pas revenu sur ce post pensant qu'il était résolu .
Au lieu de mettre monnaie = monnaie % 1 , c'est monnaie = monnaie % i
Mais c'est peut-être trop tard .
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :