Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'Algorithme ?

Demenagement

    28 janvier 2011 à 10:52:30

    Bonjour,

    Mon code ne possède aucune erreur java car la copilation s'effectue sans erreur.
    Cependant, il y'a une erreur dans l'Algorithme que je n'arrive pas à trouver.

    Le but est d'effectuer un déménagement d'un immeuble.
    L'utilisateur doit entrer le nombre de cartons à chaque étage.
    Tous les cartons doivent êtres déplacés au rez de chaussé.
    L'ascenceur peut prendre 5 cartons au maximum.
    Le but est de faire faire le moins de voyages à l'ascenceur (donc de le remplir à sa capacité maximale à chaque voyage).

    Voici mon code :

    import algoprog.util.Console;
    public class demenagement {
        public static void main (String[] args) {
    	//Constantes
    	int NB_NIV = 4;
    	int MAX_CARTONS = 5;
    	//Variables
    	int Le_Etage;
    	int Nb_Voyages = 0;
    	int Le_Immeuble[] = new int [NB_NIV];
    	int Le_Total_Cartons = 0;
    	//Remplir les cases du tableau
    	Le_Immeuble[0]=0;
    	for (Le_Etage=1; Le_Etage<NB_NIV; Le_Etage=Le_Etage+1) {
    	    Le_Immeuble[Le_Etage] = Console.lireEntier  
    			("Combien y'a t'il de cartons a  l'etage "
                                                  + Le_Etage + " ? ");
    	    Le_Total_Cartons = Le_Total_Cartons+Le_Immeuble[Le_Etage];
    	}
    	int Le_Asc = 0;
    	int Max_Asc=MAX_CARTONS;
    	Le_Etage = NB_NIV-1;
    	int Le_Dernier_Etage=Le_Etage;
    	while (Max_Asc>0 
                   && Le_Immeuble[0]+Le_Asc<Le_Total_Cartons 
                   && Le_Etage>0){
    	    if (Le_Immeuble[Le_Etage] >= Max_Asc) {
    		Le_Asc = Le_Asc+Max_Asc;
    		Le_Immeuble[Le_Etage]=Le_Immeuble[Le_Etage]-Max_Asc;
    		Max_Asc=0;
    		if (Le_Immeuble[Le_Etage]!=0){
    			Le_Dernier_Etage=Le_Etage;
    		} else {
    		    Le_Dernier_Etage=Le_Etage-1;
    		}
    	    } else {
    		Le_Asc = Le_Asc+Le_Immeuble[Le_Etage];
    		Le_Immeuble[Le_Etage]=0;
    		Max_Asc = Max_Asc-Le_Immeuble[Le_Etage];
    		Le_Etage = Le_Etage-1;
    		Le_Dernier_Etage=Le_Etage;
    	    }
    	} 
    	Le_Immeuble[0]=Le_Immeuble[0]+Le_Asc;
    	Le_Asc=0;
    	//Affichage modifier l'affichage et en faire un tableau
    	for (Le_Etage=NB_NIV-1; Le_Etage>=0; Le_Etage=Le_Etage-1) {
    	    System.out.println (Le_Immeuble[Le_Etage]);
    	}
    	Nb_Voyages=Nb_Voyages+1;
    	Le_Etage=Le_Dernier_Etage;
    	Max_Asc=MAX_CARTONS;
        }
    }
    


    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      28 janvier 2011 à 20:26:09

      bonsoir, je viens juste de commencer la langage java
      pour ton problème je n'ai pas tout lu ton code,
      je te propose d'utliser la boucle
      do  while


      de crée une variable carton restant
      le nombre carton restant c'est le nombre de carton total de l'étage moins
      le nombre carton max asenceur
      tant que ce nombre inférieur 0 on diminue de 5
      lorsqu'on sort de la boucle on passe à l'étage au dessous.

      peut être qu'avec cette solution ca sera plus simple plutot qu'utiliser la boucle while



      • Partager sur Facebook
      • Partager sur Twitter
      projet de création domotique avec beaglebone avec nodejs
      Anonyme
        28 janvier 2011 à 20:41:57

        Je suppose que tu aurais plus de réponse en réécrivant ton code en suivant les conventions d'écriture en java.

        Là, c'est un peu illisible.
        • Partager sur Facebook
        • Partager sur Twitter

        Problème d'Algorithme ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown