Probleme-java

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++;
}
}

}
Configuration: Windows Vista Internet Explorer 7.0

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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