Probleme-java

Fermé
sim0na Messages postés 15 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 14 octobre 2010 - 6 févr. 2010 à 21:40
 Utilisateur anonyme - 7 févr. 2010 à 12:22
salut,
g un probleme d programmation l'ennonee demande 1 prog ki rend la monnaie a un client en calculant et affichant le nbr minimal d pieces {1,2,5,10,20,50,100,200} correspondant a 1 montant donnee g fai 1 ptit prog mais ca fonctionne pas et j sai pa l'erreur ou si vous avez une idee ....
merci d'avance


import java.util.Scanner;


public class test_tab {

public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
int[] tab= {1,2,5,10,20,50,100,200};
int r=0;

System.out.println("tapez le montant");
int montant=sc.nextInt();
for (int i=1;i<=tab.length;i++){
while(montant<=tab[i]){
int q=montant/tab[i];
r=montant-(q*tab[i]);
System.out.println(" "+q+"pieces de"+tab[i]);
}
montant=r;
i++;
}
}

}
A voir également:

2 réponses

J'ai noté une petite erreur :
   for (int i=1;i<=tab.length;i++){
   // A changer en
   for (int i=0; i < tab.length; i++){


Plus loin tu fait
i++; 

Qui est inutile car le for le fait deja tout seul

En enfin
   int q = montant / tab[i]; 
   // A changer en
   int q = (int) (montant / tab[i]); 


Voila, sa fait longtemps que j'ai pas fait de java ^^ alors il est possible qu'il reste d'autre erreurs
0
Utilisateur anonyme
7 févr. 2010 à 12:22
Salut,

Voilà ce que je pense que l'on veut faire:

-entrer le montant à payer
-entrer le montant recu du client
-calculer le montant à rendre
-et calculer les pièces (ou billets) à rendre en fonction de ce montant à rendre

Pour rendre le nombre minimal de pieces à l'aide du tableau >>> {1,2,5,10,20,50,100,200} je propose ceci:

   import java.util.Scanner; 


    public class test_tab
   { 
   
       public static void main(String[] args)
      { 
         Scanner sc=new Scanner (System.in); 
         int[] tabDispose = {1,2,5,10,20,50,100,200}; // les pieces (ou billets) dont on dispose
         int[] tabRendre = new int[20]; // les pieces a rendre
         int montantRecu = 0;
         int montantDu = 0;
         int montantArendre = 0;
         boolean encore1 = true;
         boolean encore2 = true;
         int r=0; 
      
         while(encore1)
         {
            encore2 = true;
            System.out.print("\ntapez le montant a payer (ou 0 pour terminer): "); 
            montantDu = sc.nextInt();
            if(montantDu == 0)
            {
               System.out.println("\n\nF I N");
               encore1 = false;
               return;
            }
            while(encore2)
            {
               encore2 = false;
               System.out.print("tapez le montant recu: "); 
               montantRecu = sc.nextInt();
               montantArendre = montantRecu - montantDu;
               if(montantArendre == 0)
                  break;
               if(montantArendre < 0)
                  encore2 = true;
            }
            System.out.println("Montant a rendre: " + montantArendre);
         
         //{1,2,5,10,20,50,100,200} // pieces possibles
            int i1Sv = 0;
            for (int i = tabDispose.length -1; i > -1; i--) // on commence par la fin du tableau
            {
               if(tabDispose[i] <= montantArendre)
               {
                  for(int i1 = i1Sv; i1<tabRendre.length; i1++)
                  {
                     tabRendre[i1] = tabDispose[i]; // on range dans le tableau tabRendre qui servira à afficher
                                                                  // le résultat
                     montantArendre-= tabDispose[i];
                     if(montantArendre == 0)
                     {
                        break;
                     }
                     else
                     {
                        i = tabDispose.length;
                        i1Sv = (i1 +1);
                        break;
                     }
                  }
               }
               
               if(montantArendre == 0)
               {
                  break;
               }
            }
            for(int i1 = 0; i1<tabRendre.length;i1++)
            {
               if(tabRendre[i1] > 0)
                  System.out.println("\nPiece a rendre: " + tabRendre[i1]);
            }
            
            encore1 = true;   
            encore2 = true;
            i1Sv = 0;	
            for(int i1 = 0; i1<tabRendre.length;i1++)
            {
               tabRendre[i1] = 0;
            }
         } 
      } 
   }



C'est un exemple (premier jet) certainement améliorable et non le seul...

Cordialement,

Dan
0