IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème programme : Le rendu de pièces de monnaie


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 3
    Par défaut Problème programme : Le rendu de pièces de monnaie
    Bonjour,

    Je rencontre quelques difficultés concernant ce programme. La consigne est :

    - On veut réaliser une somme d'argent (limité à 10€) avec des pièces de 2€, 1€, 50c, 20c, 10c, 5c, 2c, 1c, en utilisant le moins de pièces possible. Par exemple, 5,88€ se paye avec deux pièces de 2€, une pièce d'1€, une pièce de 50c, une pièce de 20c, une pièce de 10c, une pièce de 5c, une pièce de 2c et une pièce de 1c. Ecrire un algorithme demandant à l'utilisateur de saisir une somme d'argent, puis détermine le détail des pièces à utiliser pour constituer la somme saisie en utilisant le moins de pièces possible.

    J'ai un problème au niveau de la pièce de 1 centime. Comme vous pouvez le voir, j'ai saisi un montant de 5,88€ et logiquement, il y a une pièce de 1 centime. Or, le programme refuse de me l'afficher.

    Pouvez vous m'aider ? Merci d'avance !

    Nom : pb1.PNG
Affichages : 2667
Taille : 88,0 Ko
    Nom : pb2.PNG
Affichages : 1896
Taille : 85,7 Ko
      0  2

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour,
    En passant ...

    Afficher la valeur de q8 pour voir ce qu'il y a dedans.
    S'il y a 1
    =>
    Et si
    à la place de
    if m//2
    on mettait à la place de
    if r1//1
    on mettait etc.

    Pour moi 2 intérêts :
    1) m//2, r1//1 etc. ce sont des calculs qu'on a déjà effectués et dont le résultat a été mis dans q1, q2,etc. donc pas besoin de refaire tous ces calculs...
    2) Ensuite faire If "un calcul" ça me parait bizarre je préfère If "mon quotient est différent de 0"
      1  0

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 3
    Par défaut
    J’essaierai la fonction différent de car il est vrai que si r7 est différent de 0, il reste bien 1 centime.

    Je te remercie !
      0  2

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Parfait ...
      0  0

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anastxp Voir le message
    J’essaierai la fonction différent de car il est vrai que si r7 est différent de 0, il reste bien 1 centime.
    Ca ne changera pas le fait que q8 vaut 0 alors qu'il devrait valoir 1. Alors ok tu afficheras bien un message correct à l'écran mais ton code continuera à ne pas calculer la bonne valeur. Si ça te suffit...
    Nom : VirtualBox_Debian8_64b_08_05_2019_22_09_20.png
Affichages : 1802
Taille : 341,2 Ko

    Ceci dit, si vraiment ça te suffit je te suggère alors de tester ton algo sur la somme "1€40" et regarder combien de pièces de 20 centimes il te sort (variable q4).
    Nom : VirtualBox_Debian8_64b_08_05_2019_21_19_27.png
Affichages : 1891
Taille : 316,8 Ko
    Tu pourras toujours alors tenter "r3 différent de 0"

    Citation Envoyé par anastxp Voir le message
    En effet, je suis étudiante en première année de BTS informatique. Il est clair que je suis donc en apprentissage.
    Je n'ai pas dit qu'en BTS tu devrais être forte en prog, j'ai dit qu'en BTS tu devrais avoir plus de conscience professionnelle dans la conception d'un algorithme. On voit de suite la différence entre un code maladroit mais écrit par quelqu'un qui en veut et le code d'un "je m'en foutiste" doublé d'un "j'en fais le minimum". Tu ne feras croire à personne qu'on ne t'a pas appris les tableaux !!!


    Citation Envoyé par anastxp Voir le message
    Je te remercie !
    De rien. Ah oui, c'est vrai, ce n'est pas moi que tu remercies. Pourtant c'est moi qui t'ai donné la bonne solution (celle qui calcule la bonne valeur pour q8 !!!)
    Nom : VirtualBox_Debian8_64b_08_05_2019_20_39_59.png
Affichages : 1746
Taille : 432,0 Ko
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]
      1  4

  6. #6
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Bonjour d'un autre vieux qui a très bien vécu
    Personnellement j'aurais utilisé une liste et une boucle.
    Premièrement, je sépare les euros des cents et vérifie la division entière des euros par 2 et son reste, ce qui me donne les pièces de 2 et 1 euros
    Deuxièmement, j'utilise une boucle pour tester toutes les pièces en cents
    En petit exemple sans prétention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    m= 8.97
    print(m)
    #on sépare les euros des cents
    euros=int(m)
    #nombre de cents
    cents=int(m*100)%100
    print("valeur =",euros,"€ et ",cents,"cent(s)")
    # les pièces en euros: un certain nombre de pièces de 2 et éventuellement 1 pièce de 1
    print("Soit ",euros//2,"pièce(s) de 2€", "et",euros%2,"pièce de 1€")
    print("----------------------------------- ")
    #Liste des pièces en cents
    pcents=[50, 20, 10, 5, 2, 1]
    # on parcourt cette liste
    print("Pièces en cents ")
    for n in pcents:
        p=cents//n
        cents=cents%n
        if p>0 :
            print (p," piece(s) de", n,"c")
      1  1

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2019
    Messages : 3
    Par défaut
    Enfin une réponse claire et polie ! Je te remercie Michel !
      0  2

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Déjà sur la forme: rarement vu un code aussi pourri. Déjà tu nous mets une copie d'écran ce qui nous oblige à tout retaper si on veut tester. Ca t'aurait trop fatigué les doigts de copier ton code dans le post ?
    Ensuite tu calcules (par exemple) q1=m//2 puis tu refais ce calcul dans if m//2. Donc autant t'as la flemme de nous poster ton code, autant pour ton programme t'as pas ce genre de scrupules car tu n'hésites pas à le faire bosser deux fois plus que nécessaire.

    Peut pas utiliser un tableau de valeurs et programmer une boucle ? Ok ça impose de réfléchir un peu au début mais ensuite c'est tellement simple de relire le code et le faire évoluer si besoin (le jour où par exemple on te demande d'inclure les billets de 5, 10 et 20€ !!!).

    Sinon pour tes erreurs c'est dû à l'imprécision du calcul en flottants (exécute l'instruction 1.88 % 1 en direct dans ton idle et tu verras ce que je veux dire). Donc soit tu convertis ta somme initiale en centimes et tu travailles avec des entiers, soit tu utilises le module decimal pour faire tes calculs en précision exacte.

    Citation Envoyé par vttman Voir le message
    2) Ensuite faire If "un calcul" ça me parait bizarre je préfère If "mon quotient est différent de 0"
    Tu peux alors utiliser le booléen implicite et réduire à if mon_quotient...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]
      1  4

Discussions similaires

  1. programme de rendu monnaie
    Par jmc41320 dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 14/02/2018, 02h56
  2. problème avec l'envoi de pièces jointes
    Par mouna201 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 11/01/2006, 13h20
  3. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30
  4. Problème avec le rendu de sphère
    Par Francky033 dans le forum DirectX
    Réponses: 10
    Dernier message: 29/08/2003, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo