Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1502 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Commenter un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commenter un programme

n°2163418
Profil sup​primé
Posté le 11-11-2012 à 03:00:18  answer
 

Bonjour  
Pourrais t'on SVP m'aider via des commentaires bien explicites et expliqués étapes par étapes pour bien comprendre ce programme: pour indice c'est un algo qui partant d'une ville de départ (paris) doit faire le tour de 6 villes pour revenir à paris, donc il y'a un total de 7 villes ^^ et il doit toujours trouver la distance la plus proche choisir cette ville et y'a pas possibilité de passer dans une ville 2 fois.
Je precise qu'il y'a 2 fichiers joints: respectivement Algo.java et ville.java.
je vous remercie d'avance :)
 

Code :
  1. import java.util.HashMap;
  2. import java.util.Map.Entry;
  3. public class Algo{
  4. private HashMap<String,Ville> villes;
  5. public Algo(){
  6.  villes = new HashMap<String,Ville>();
  7.  Ville nice = new Ville("Nice" );
  8.  nice.addDistance("Angers",999);
  9.  nice.addDistance("Bordeaux",844);
  10.  nice.addDistance("Clermond",620);
  11.  nice.addDistance("Paris",950);
  12.  nice.addDistance("Strasbourg",842);
  13.  nice.addDistance("Montpellier",345);
  14.  villes.put(nice.getNom(),nice);
  15.  Ville angers = new Ville("Angers" );
  16.  angers.addDistance("Nice",999);
  17.  angers.addDistance("Bordeaux",335);
  18.  angers.addDistance("Clermond",402);
  19.  angers.addDistance("Paris",303);
  20.  angers.addDistance("Strasbourg",742);
  21.  angers.addDistance("Montpellier",692);
  22.  villes.put(angers.getNom(),angers);
  23.  Ville bordeaux = new Ville("Bordeaux" );
  24.  bordeaux.addDistance("Nice",844);
  25.  bordeaux.addDistance("Angers",335);
  26.  bordeaux.addDistance("Clermond",369);
  27.  bordeaux.addDistance("Paris",561);
  28.  bordeaux.addDistance("Strasbourg",958);
  29.  bordeaux.addDistance("Montpellier",499);
  30.  villes.put(bordeaux.getNom(),bordeaux);
  31.  Ville clermond = new Ville("Clermond" );
  32.  clermond.addDistance("Nice",620);
  33.  clermond.addDistance("Angers",102);
  34.  clermond.addDistance("Bordeaux",369);
  35.  clermond.addDistance("Paris",425);
  36.  clermond.addDistance("Strasbourg",574);
  37.  clermond.addDistance("Montpellier",367);
  38.  villes.put(clermond.getNom(), clermond);
  39.  Ville paris = new Ville("Paris" );
  40.  paris.addDistance("Nice",950);
  41.  paris.addDistance("Angers",303);
  42.  paris.addDistance("Bordeaux",561);
  43.  paris.addDistance("Clermond",425);
  44.  paris.addDistance("Strasbourg",448);
  45.  paris.addDistance("Montpellier",763);
  46.  villes.put(paris.getNom(),paris);
  47.  Ville strasbourg = new Ville("Strasbourg" );
  48.  strasbourg.addDistance("Nice",842);
  49.  strasbourg.addDistance("Angers",742);
  50.  strasbourg.addDistance("Bordeaux",958);
  51.  strasbourg.addDistance("Clermond",574);
  52.  strasbourg.addDistance("Paris",448);
  53.  strasbourg.addDistance("Montpellier",727);
  54.  villes.put(strasbourg.getNom(),strasbourg);
  55.  Ville montpellier = new Ville("Montpellier" );
  56.  montpellier.addDistance("Nice",345);
  57.  montpellier.addDistance("Angers",692);
  58.  montpellier.addDistance("Bordeaux",499);
  59.  montpellier.addDistance("Clermond",367);
  60.  montpellier.addDistance("Paris",763);
  61.  montpellier.addDistance("Strasbourg",727);
  62.  villes.put(montpellier.getNom(),montpellier);
  63. }
  64. public HashMap<String,Ville> getVilles(){
  65.  return this.villes;
  66. }
  67. public int displayTravelingSalesmanV1(String nom, String arrive, HashMap<String,Ville> villesRestantes){
  68.  int min = Integer.MAX_VALUE;
  69.  String nextVille = null;
  70.  int distance;
  71.  for(Entry<String, Ville> entry : villesRestantes.entrySet()) {
  72.      Ville value = entry.getValue();
  73.      distance = value.getDistanceTo(nom);
  74.   if(distance > 0 && distance < min && (!arrive.equals(value.getNom()) || villesRestantes.size() <= 1)){
  75.    min = distance;
  76.    nextVille = value.getNom();
  77.   }
  78.  }
  79.  if(nextVille != null){
  80.   villesRestantes.remove(nextVille);
  81.   System.out.println(nom + " -> " + nextVille + " = " + min + "km" );
  82.   return min + displayTravelingSalesmanV1(nextVille,arrive,villesRestantes);
  83.  }
  84.  return 0;
  85. }
  86. int[][] suites = new int[7][7];
  87. public int displayTravelingSalesmanV2(int i, int j){
  88. }
  89. public static void main(String[] args){
  90.  Algo algo = new Algo();
  91.  int distanceTotale = algo.displayTravelingSalesmanV1("Paris","Paris", algo.getVilles());
  92.  System.out.println("Distance Total parcourue: " + distanceTotale + "km" );
  93. }
  94. }


 
 
 

Code :
  1. import java.util.HashMap;
  2. public class Ville{
  3. private HashMap<String,Integer> distances;
  4. private String nom;
  5. public Ville(String nom){
  6.  this.nom = nom;
  7.  this.distances = new HashMap<String,Integer>();
  8. }
  9. public String getNom(){
  10.  return this.nom;
  11. }
  12. public void addDistance(String ville,Integer distance){
  13.  this.distances.put(ville,distance);
  14. }
  15. public Integer getDistanceTo(String ville){
  16.  if(this.distances.containsKey(ville)){
  17.   return this.distances.get(ville);
  18.  }
  19.  return -1;
  20. }
  21. }

mood
Publicité
Posté le 11-11-2012 à 03:00:18  profilanswer
 

n°2163448
reelooz10
Posté le 11-11-2012 à 14:23:56  profilanswer
 

Le mieux c'est de faire les commentaires toi même pour voir si t'as compris, et après, tu postes pour qu'on les check.


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
n°2163462
Profil sup​primé
Posté le 11-11-2012 à 16:26:10  answer
 

reelooz10 a écrit :

Le mieux c'est de faire les commentaires toi même pour voir si t'as compris, et après, tu postes pour qu'on les check.


Code :
  1. // implementation de l'interface Map par l'utilisation de table hachee (HashMap qui sert à retirer retirer les iterations à chaque ville parcourue
  2. //definition ville de depart (paris) et ville d'arrivee en parametre in the main
  3. import java.util.HashSet;
  4. import java.util.HashMap;
  5. import java.util.Map.Entry;
  6. public class Heuristique{
  7. public static void main(String[] args)
  8. {
  9.  Heuristique heuristique = new Heuristique();
  10.  int Totale = heuristique.displayVoyageV1("Paris","Paris", heuristique.getVilles());
  11.   System.out.println("La distance parcourue est: " + Totale + "kms" );
  12. }
  13.      private HashMap<String, Ville> city;
  14.    //methodes pour saisie ville actuelle, calcul/recherche ville la plus proche, retour de la disttance et calcul de la prochaine ville jusqu'a faire le tour
  15.    //
  16. public HashMap<String,Ville> getVilles()
  17. {
  18.  return this.city;
  19. }
  20.      public int displayVoyageV1(String name, String arrive, HashMap<String,Ville> VilleNonParcourue)
  21. {
  22.   int portee;
  23.   int min = Integer.MAX_VALUE;
  24.   String prochaineVille = null;
  25.    for(Entry<String, Ville> entry : VilleNonParcourue.entrySet())
  26.     {
  27.      Ville value = entry.getValue();
  28.      portee = value.getPorteeTo(name);
  29.      if(portee > 0 && portee < min && (!arrive.equals(value.getName()) || VilleNonParcourue.size() <= 1))
  30.        {
  31.         min = portee;
  32.         prochaineVille = value.getName();
  33.        }
  34.     }
  35.        if(prochaineVille != null)
  36.         {
  37.          VilleNonParcourue.remove(prochaineVille);
  38.          System.out.println(name + " -> " + prochaineVille + " = " + min + "km" );
  39.          return min + displayVoyageV1(prochaineVille,arrive,VilleNonParcourue);
  40.         }
  41.         return 0;
  42. }
  43. // declaration matrice diagonale
  44. int[][] matrice = new int[7][7];
  45. /*public int displayVoyageV2(int i, int j)
  46. {
  47. }*/
  48.     /*instanciation des villes et initialisation de la matrice distance sauf pour la ville en question
  49. implementation des methodes put et get pour les differentes distances */
  50.    public Heuristique()
  51.       {
  52.              city = new HashMap<String,Ville>();
  53.     Ville angers = new Ville("Angers" );
  54.     angers.addPortee("Bordeaux",335);
  55.     angers.addPortee("Clermond",402);
  56.     angers.addPortee("Montpellier",692);
  57.     angers.addPortee("Nice",999);
  58.     angers.addPortee("Paris",303);
  59.     angers.addPortee("Strasbourg",742);
  60.     city.put(angers.getName(),angers);
  61.      Ville bordeaux = new Ville("Bordeaux" );
  62.      bordeaux.addPortee("Angers",335);
  63.      bordeaux.addPortee("Clermond",369);
  64.      bordeaux.addPortee("Montpellier",499);
  65.      bordeaux.addPortee("Nice",844);
  66.      bordeaux.addPortee("Paris",561);
  67.      bordeaux.addPortee("Strasbourg",958);
  68.      city.put(bordeaux.getName(),bordeaux);
  69.       Ville clermond = new Ville("Clermond" );
  70.       clermond.addPortee("Angers",402);
  71.       clermond.addPortee("Bordeaux",369);
  72.       clermond.addPortee("Montpellier",367);
  73.       clermond.addPortee("Nice",620);
  74.       clermond.addPortee("Paris",425);
  75.       clermond.addPortee("Strasbourg",574);
  76.       city.put(clermond.getName(), clermond);
  77.        Ville montpellier = new Ville("Montpellier" );
  78.        montpellier.addPortee("Angers",692);
  79.        montpellier.addPortee("Bordeaux",499);
  80.        montpellier.addPortee("Clermond",367);
  81.        montpellier.addPortee("Nice",345);
  82.        montpellier.addPortee("Paris",763);
  83.        montpellier.addPortee("Strasbourg",727);
  84.        city.put(montpellier.getName(),montpellier);
  85.         Ville nice = new Ville("Nice" );
  86.         nice.addPortee("Angers",999);
  87.         nice.addPortee("Bordeaux",844);
  88.         nice.addPortee("Clermond",620);
  89.         nice.addPortee("Montpellier",345);
  90.         nice.addPortee("Paris",950);
  91.         nice.addPortee("Strasbourg",842);
  92.         city.put(nice.getName(),nice);
  93.          Ville paris = new Ville("Paris" );
  94.          paris.addPortee("Angers",303);
  95.          paris.addPortee("Bordeaux",561);
  96.          paris.addPortee("Clermond",425);
  97.          paris.addPortee("Montpellier",763);
  98.          paris.addPortee("Nice",950);
  99.          paris.addPortee("Strasbourg",448);
  100.          city.put(paris.getName(),paris);
  101.           Ville strasbourg = new Ville("Strasbourg" );
  102.           strasbourg.addPortee("Angers",742);
  103.           strasbourg.addPortee("Bordeaux",958);
  104.           strasbourg.addPortee("Clermond",574);
  105.           strasbourg.addPortee("Montpellier",727);
  106.           strasbourg.addPortee("Nice",842);
  107.           strasbourg.addPortee("Paris",448);
  108.           city.put(strasbourg.getName(),strasbourg);
  109. }
  110. }


 
 
 

Code :
  1. // classe Ville
  2. import java.util.HashSet;
  3. import java.util.HashMap;
  4. import java.util.Map.Entry;
  5. public class Ville
  6. {
  7. private HashMap<String,Integer> portees;
  8. private String name;
  9.     //mutateurs pour ajout des distances, determination de la cle des villes si elle existe, puis recherche nom ville sa distance dans HashMap et retour du nom.
  10.  public void addPortee(String ville,Integer portee)
  11.  {
  12.  this.portees.put(ville,portee);
  13.  }
  14.  public Integer getPorteeTo(String ville)
  15.       {
  16.         if(this.portees.containsKey(ville))
  17.          {
  18.           return this.portees.get(ville);
  19.          }
  20.                    return -1;
  21.       }
  22.   public Ville(String name)
  23.   {
  24.    this.name = name;
  25.    this.portees = new HashMap<String,Integer>();
  26.   }
  27.    public String getName()
  28.    {
  29.     return this.name;
  30.    }
  31. }

n°2163486
reelooz10
Posté le 11-11-2012 à 22:15:39  profilanswer
 

Si tu veux faire un truc bien, au moins commente chaque boucle, chaque condition, ect... La ce que tu fais ne sert à rien pour "comprendre" le code.


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
n°2163494
Profil sup​primé
Posté le 12-11-2012 à 03:24:13  answer
 

reelooz10 a écrit :

Si tu veux faire un truc bien, au moins commente chaque boucle, chaque condition, ect... La ce que tu fais ne sert à rien pour "comprendre" le code.


je crois que j'ai posté ce message juste pour ça, sinon je l'aurais fait moi même sans demander l'avis d'expert :D

n°2163503
reelooz10
Posté le 12-11-2012 à 09:07:20  profilanswer
 

Essaye au moins. Si tu crois qu'on va faire le taff à ta place...


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
n°2163529
willy le k​id
Posté le 12-11-2012 à 11:05:10  profilanswer
 

Commenter le code c'est :

  • un commentaire par variable
  • un commentaire par méthode
  • un commentaire par boucle / condition / élément d'algo non trivial


Un bon commentaire se fait sur une ligne
 
Plus un cartouche en entête de chaque classe ou tu écrits sur le rôle de la classe,  
et peux écrire un peu de "littérature" sur l'utilité de la classe, ses limitations, les choix d'algos qui sont faits.
 
Tout cela est normé en javadoc  
cf par exemple http://simonandre.developpez.com/t [...] n-javadoc/
 
Tu as quelque choses à livrer à un client ou un devoir à remettre à un prof ?

n°2163533
willy le k​id
Posté le 12-11-2012 à 11:23:15  profilanswer
 

Je me dévoue par amour du beau code :-)
 

Code :
  1. import java.util.HashSet;
  2. import java.util.HashMap;
  3. import java.util.Map.Entry;
  4. /**
  5. * Classe ville.
  6. * Une ville a  un nom (String name)
  7. * et une portée (distance avec les autres villes) sous forme de la  Hashmap portee.
  8. * @author omzoway
  9. *
  10. */
  11. public class Ville
  12. {
  13. /** la portée sous forme de Hashmap*/
  14. private HashMap<String,Integer> portees;
  15. /** le nom de la ville */
  16. private String name;
  17. /**
  18.  *  Ajout d'une portée dans la Hashmap portees sous la clé ville
  19.  * @param ville la ville clé de la Hashmap
  20.  * @param portee la portée à ajouter à la ville
  21.  */
  22. public void addPortee(String ville,Integer portee)
  23. {
  24.  this.portees.put(ville,portee);
  25. }
  26. /**
  27.  * Getter de la portée d'une ville, récupérée dans la Hashmap portee
  28.  * @param ville la ville dont on cherche la portée
  29.  * @return la portée correspondant à la ville en param, -1 si clé ville inexistante
  30.  */
  31. public Integer getPorteeTo(String ville)
  32. {
  33.  if(this.portees.containsKey(ville))
  34.  {
  35.   //retourne la portee dans la map correspondant à la clé  
  36.   return this.portees.get(ville);
  37.  }
  38.  //si on est la c'est que la map n'a pas de valeur pour la clé ville, retourne la valeur -1 comme valeur par défaut
  39.  return -1;
  40. }
  41. /**
  42.  * Constructeur d'instance de Ville à un paramètre
  43.  * @param name le nom de la ville
  44.  */
  45. public Ville(String name)
  46. {
  47.  this.name = name;
  48.  this.portees = new HashMap<String,Integer>();
  49. }
  50. /**
  51.  * Getter du nom de la ville
  52.  * @return le nom de la ville
  53.  */
  54. public String getName()
  55. {
  56.  return this.name;
  57. }
  58. }

Message cité 1 fois
Message édité par willy le kid le 12-11-2012 à 17:53:06
n°2163686
Profil sup​primé
Posté le 13-11-2012 à 07:42:42  answer
 

willy le kid a écrit :

Je me dévoue par amour du beau code :-)
 

Code :
  1. import java.util.HashSet;
  2. import java.util.HashMap;
  3. import java.util.Map.Entry;
  4. /**
  5. * Classe ville.
  6. * Une ville a  un nom (String name)
  7. * et une portée (distance avec les autres villes) sous forme de la  Hashmap portee.
  8. * @author omzoway
  9. *
  10. */
  11. public class Ville
  12. {
  13. /** la portée sous forme de Hashmap*/
  14. private HashMap<String,Integer> portees;
  15. /** le nom de la ville */
  16. private String name;
  17. /**
  18.  *  Ajout d'une portée dans la Hashmap portees sous la clé ville
  19.  * @param ville la ville clé de la Hashmap
  20.  * @param portee la portée à ajouter à la ville
  21.  */
  22. public void addPortee(String ville,Integer portee)
  23. {
  24.  this.portees.put(ville,portee);
  25. }
  26. /**
  27.  * Getter de la portée d'une ville, récupérée dans la Hashmap portee
  28.  * @param ville la ville dont on cherche la portée
  29.  * @return la portée correspondant à la ville en param, -1 si clé ville inexistante
  30.  */
  31. public Integer getPorteeTo(String ville)
  32. {
  33.  if(this.portees.containsKey(ville))
  34.  {
  35.   //retourne la portee dans la map correspondant à la clé  
  36.   return this.portees.get(ville);
  37.  }
  38.  //si on est la c'est que la map n'a pas de valeur pour la clé ville, retourne la valeur -1 comme valeur par défaut
  39.  return -1;
  40. }
  41. /**
  42.  * Constructeur d'instance de Ville à un paramètre
  43.  * @param name le nom de la ville
  44.  */
  45. public Ville(String name)
  46. {
  47.  this.name = name;
  48.  this.portees = new HashMap<String,Integer>();
  49. }
  50. /**
  51.  * Getter du nom de la ville
  52.  * @return le nom de la ville
  53.  */
  54. public String getName()
  55. {
  56.  return this.name;
  57. }
  58. }



 
 
bonjour, Merci merci, promis je lirai le javadoc, non non pas pour un client mais déjà rendu. et le Heuristique.java? il est plus beau non? lool

n°2167358
Benh_31
Posté le 09-12-2012 à 12:12:10  profilanswer
 

ah, cette exo c'est sur les chemins eulériens non ? :) je me rappelle l'avoir fais dans ma jeunesse l'an dernier ^^ il faut que tu buches l'algorithme de Dijkstra pour comprendre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Commenter un programme

 

Sujets relatifs
Programme automatisation.Programme de dames
programme C :jeu de cartesProgramme C++ , erreur ? Ou ça ?
[HTML5] Quels outils pour une interface graphique d'un programme JAVA?Déclenchement automatique de programme par enregistrement de fichier
programme C[Python] Programme débutant
Aide programme vbaprogramme qui reconnait une phrase afficher à l'écran
Plus de sujets relatifs à : Commenter un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR