Probleme-java

sim0na Messages postés 17 Statut Membre -  
 danimo -
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

  1. Siluni
     
    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
  2. danimo
     
    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