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

 C Discussion :

Besoin d'aide pour Greedy


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Par défaut Besoin d'aide pour Greedy
    Bonjour,

    Je début en informatique et j'aurais besoin d'aide. L’exercice consiste à indiquer le nombre de pièce à rendre. Les différentes pièces pour rendre la monnaie (pas de billets) étant : 0.25 ; 0.10 ; 0.05 et 0.01.
    Le problème que j'ai est que je ne parviens pas à indiquer le nombre de pièces.
    Par exemple, si le nombre de pièce à rendre est "4", il devrait tout simplement m'indiquer "4" (pas besoin d'indiquer quelles pièces).
    J'arrive à récupérer le nombre de pièces séparément, mais pas en globale.
    Je ne parviens pas à écrie un code qui ne marquerais que le résultat, et non chaque pièce.
    Voici mon code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <stdio.h>
     
    int main(void)
    {
    int quart, /* correspond à la constante du nombres de pièces de 0.25*/
    dime,/* correspond à la constante du nombres de pièces de 0.10 */
    nickel,/* correspond à la constante du nombres de pièces de 0.05 */
    pennie,/* correspond à la constante du nombres de pièces de 0.01 */
     
    argent;/* c'est la constante dans laquel on enregistrera la somme entré par l'utilisateur */
     
    printf("Veuillez entrer la somme d'argent\n");
    scanf("%d", &argent);
     
    quart = argent/0.25;
    argent = argent%0.25;
    dime = argent/0.10;
    argent = argent%0.10;
    nickel = argent/0.05;
    argent = argent%0.05;
    pennie = argent/0.01;
    argent = argent%0.01;
     
     
    printf("Il faut %d piece(s) de 0.25 EUR\n", quart);
    printf("Il faut %d piece(s) de 0.10 EUR\n", dime);
    printf("Il faut %d piece(s) de 0.05EUR\n", nickel);
    printf("Il faut %d piece(s) de 0.01 EUR\n", pennie);
     
     
    return 0;
    }

    Merci pour votre aide !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,
    Tu travailles avec des nombres à virgules or tu sauvegarde la somme à rendre dans un int.
    Donc si tu fais somme vaudra 0.


    Comme tu travailles avec un nombre à deux chiffres après la virgules, je te conseille de multiplier la somme à rendre par 100 pour ne travailler qu'avec des entiers.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut
    bonjour,
    voilà une proposition de reponse

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
     
    void main ()
    {
    float quart, /* correspond à la constante du nombres de pièces de 0.25*/
    dime,/* correspond à la constante du nombres de pièces de 0.10 */
    nickel,/* correspond à la constante du nombres de pièces de 0.05 */
    pennie,/* correspond à la constante du nombres de pièces de 0.01 */
     
    argent;/* c'est la constante dans laquel on enregistrera la somme entré par l'utilisateur */
     
    printf("Veuillez entrer la somme d'argent\n");
    scanf("%f", &argent);
     
    quart = argent/0.25;
    argent = argent - quart;
    dime = argent/0.10;
    argent = argent-dime;
    nickel = argent/0.05;
    argent = argent-nickel;
    pennie = argent/0.01;
     
     
    printf("Il faut %f piece(s) de 0.25 EUR\n", quart);
    printf("Il faut %f piece(s) de 0.10 EUR\n", dime);
    printf("Il faut %f piece(s) de 0.05EUR\n", nickel);
    printf("Il faut %f piece(s) de 0.01 EUR\n", pennie);
     
    }

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Sauf qu'il faudra tenir compte de l'erreur flottante. C'est l'autre intéret de la proposition de Neckara.

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    De plus, la somme peut ne pas être entière vu qu'on a des centimes mais le nombre de pièces sera toujours entière, il est donc inutile d'utiliser des floats pour le nombre de pièces.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 82
    Par défaut
    J'ai une autre solution si tu galère avec toutes les histoire de float et division... (évidemment ça sera moins opti qu'avec la division et le modulo.)

    Tu fais un boucle qui soustrait à ton nombre la plus grande pièce que tu as tant que le résultat n'est pas négatif tu continues tout en sauvegardant le nombre de pièces que tu as utilisé.
    Dès que c'est négatif tu reviens à ton dernière nombre positif et tu réitères l'opération avec une pièce plus faible et ainsi de suite.

  7. #7
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    J'ai une autre solution si tu galère avec toutes les histoire de float et division... (évidemment ça sera moins opti qu'avec la division et le modulo.)
    Si il galère avec des float, c'est que les float ne sont pas adaptés à son problème comme l'a fait justement remarquer Neckara. La bonne unité à utiliser est le centime et alors tous les nombres sont des entiers (et il peut utiliser la division entière (quotient et reste) sans problèmes).
    Tu fais un boucle qui soustrait à ton nombre la plus grande pièce que tu as tant que le résultat n'est pas négatif tu continues tout en sauvegardant le nombre de pièces que tu as utilisé.
    Dès que c'est négatif tu reviens à ton dernière nombre positif et tu réitères l'opération avec une pièce plus faible et ainsi de suite.
    Ca s'appelle faire une division entière en se compliquant la vie

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 13h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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