Rend la monnaie en langage c

Résolu
chungech Messages postés 7 Date d'inscription   Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
je veut faire un petit programme en langage c qui pour une somme donne S imprime le nombre (minimal) e piece necesasaires pour la composer
les pieces
30 dinar=30000 millimes
20 dinar = 20000 milimes
10 dinar =10000 millimes
5 dinar 5000
1 dinar 1000
1/2 dinar 500
1/10 dinar 100
1/20 dinar 50
1/50 20
1/100 10
1/200 5
1/500 2

svp aider moi pour trouvez l'algo juste une idee pour entamer l'écriture du programme
Configuration: Windows XP
Firefox 2.0.0.8

4 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Ca fait trop longtemps que je n'ai pas fait de C, donc je préfère éviter de te donner du code, mais voilà déjà l'algorithme :

    Soit S la somme à décomposer.
    Soit P[] le tableau contenant la valeur des pièces, trié de la plus grosse à la plus petite (le tri est important !)

    On appelle s une variable temporaire qui correspond au reste de la somme.
    On appelle p une variable temporaire qui correspond à l'indice d'une pièce dans le tableau P[]
    On appelle R[] le tableau résultat : R[p] contient le nombre de pièces p

    Voilà l'algorithme :
    s = S;
    p = 0;
    
    Tant que s > 0, faire
        R[p] = s / P[p];
        s = s % P[p];
        p = p + 1;
    Continuer;


    Voilà, c'est pas compliqué :)

    Xavier
    0
  2. chungech Messages postés 7 Date d'inscription   Statut Membre
     
    merci pour l'aide mai
    ca na pas marché
    #include <stdio.h>
    #include <stdlib.h>

    void main()
    {
    int piece[12] = {30000, 20000, 10000, 5000, 1000, 500, 100, 50, 20, 10 ,5 ,2};
    int result[12];
    int i,reste,somme;
    printf("entrez la somme s");
    scanf("%d",&somme);

    while(somme>0)
    {
    i=i+1;
    result[i]=somme/piece[i];
    reste=somme%piece[i];
    result[i]=reste;
    printf("on peut composer %d piece de valeur %d \n",result[i],piece[i]);
    }

    system("pause");
    }
    0
  3. chungech Messages postés 7 Date d'inscription   Statut Membre
     
    #include <stdio.h>
    #include <stdlib.h>

    void main()
    {
    int piece[12] = {30000, 20000, 10000, 5000, 1000, 500, 100, 50, 20, 10 ,5 ,2};
    int result[12];
    int i,reste,somme;
    printf("entrez la somme s");
    scanf("%d",&somme);

    while(somme>0)
    {
    i=i+1;
    result[i]=somme/piece[i];
    reste=somme%piece[i];
    somme=reste;
    printf("on peut composer %d piece de valeur %d \n",result[i],piece[i]);
    }

    system("pause");
    }
    0
  4. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Déjà, tu fais i=i+1 dès le début de la boucle, ce qui fait que tu n'utilises jamais la plus grosse pièce (qui est en i=0) Et il faut peut-être initialiser i à 0, non ? Enfin c'est peut-être implicite en C, je ne sais pas.

    Ensuite, qu'est-ce qui n'a pas marché exactement ? Le résultat n'est pas bon ? Tu as un message d'erreur ?
    0