-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathalgorithme-glouton.py
More file actions
66 lines (52 loc) · 2.39 KB
/
Copy pathalgorithme-glouton.py
File metadata and controls
66 lines (52 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#
# ALGORITHME GLOUTON - Rendu de monnaie d'une machine à café
#
listePieces = [ ];
# [ Valeur Piece , Quantité dans machine ]
listePieces.append( [ 0.5, 6 ] );
listePieces.append( [ 0.05, 2 ] );
listePieces.append( [ 1.0, 1] );
listePieces.append( [ 0.01, 2 ] );
listePieces.append( [ 2.0, 3 ] );
listePieces.append( [ 0.1, 2 ] );
listePieces.append( [ 0.02, 0 ] );
listePieces.append( [ 0.2, 2 ] );
# Trie de la liste par valeur de piece croissante
listePieces.sort();
# Trie de la liste par valeur de piece décroissante (Pourquoi est-ce important de trier ?)
listePieces.reverse();
print( "Voici la liste des couples [Valeur - Quantité] de pièces", listePieces )
# Un client désire se payer un café.
# Un café coûte 0.27 €.
prix = 0.27;
print( "Le café coûte %s €" % prix);
# Le client paie en insérant une pièce de 2 € ( paiment = 2 ).
paiement = 2;
print( "Le client a payé %s €" % paiement);
# On détermine la somme à rembourser
aRendre = round((paiement - prix), 2);
print( "Nous devons donc rembourser %s €" % aRendre);
# On rembourse ensuite l'utilisateur avec les pièces dont on dispose.
# Rq: Si pas assez d'argent, on rembourse l'utilisateur autant qu'on le peut et on lui affiche un message d'excuse.
# On stockera la liste des pièces à rendre dans listePiecesARendre.
listePiecesARendre = [ ];
for (valeur, quantite) in listePieces :
while True:
if valeur <= aRendre and round(quantite) > 0:
# On rajoute la pièce courante aux pièces à rendre
listePiecesARendre.append( valeur );
# On cherche la position du couple [ valeur piece, quantite ]
positionCouple = listePieces.index( ([valeur, quantite]));
# et on modifie ce couple (on décrémente la quantité de la pièce courante de 1).
quantite-=1;
listePieces[ positionCouple ] = [ valeur, quantite];
# On décrémente le montant à rendre au client
# Rq: On arrondi afin d'éviter les soucis de précision ( Retirez le round vous verrez)
aRendre = round(aRendre - valeur, 2) ;
else:
break;
print( "Voici les pièces rendues: ",listePiecesARendre );
# Si nous n'avons pas pu rembourser totalement
if aRendre != 0:
print( "Nous sommes désolé, nous n'avons pas assez de pièces afin de vous rembourser totalement. (Manque ", aRendre, " €)");
print("Bonne dégustation !");