Rend la monnaie en langage c

Résolu
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. 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
    1. 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
      1. #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
        1. 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