Résolution d'un algo[tableau en java]

Résolution d'un algo[tableau en java] - Java - Programmation

Marsh Posté le 18-10-2012 à 14:51:35    

Bonjour chers membres du forum.
Je suis débutant (bleu de chez bleu) en java :) et j'ai un problème que j'essaie de résoudre que je vais vous expliquer ci dessous:
L'objectif est qu'il y'a 7 villes représentées sous forme de tableau matriciel: et on doit faire en sorte que quand on pointe sur une ville en ligne et en colonne ça nous renvoit la distance exacte du tableau ci dessous:
     
              Angers      Bordeaux Clermont   Montpellier   Nice Paris   Strasbourg
Angers 000         335             402        692     999 303       742
Bordeaux 335         000             369        499     844 561       958
Clermont 402         369             000        367      620 425       574
Montpellier 692         499             367         000      345 763       727
nice         999         844             620        345       000 950       842
Paris         303         561             425        763      950  000       448
Strasbourg 742         958             574        727       842 448       000
 
 
Voilà ce que j'ai réussi à faire pour le moment si vous pourriez s'il vous plait m'aider à résoudre et optimiser  cette casse tête.
Je vous remercie bien d'avance.
 

Code :
  1. public class Ville {
  2. // variables
  3. String ville;
  4. int distance;
  5. int tab_ville[7][7];
  6. //Constructeur
  7. public Ville(String uneVille,) {
  8. ville = uneVille;
  9. }
  10. //accesseurs
  11. public String getVille() {
  12. return ville;
  13. }
  14. public int getDistance {
  15. return distance ;
  16. }
  17. //mutateurs
  18. public void setVille(String uneVille) {
  19. ville = uneVille
  20. }
  21. public void setDistance(int distance,String i,String j) {
  22. while distance != 0 {
  23. for(i=1,i<=7, i++)
  24. for(j=1, j<=7,j++)
  25. System.out.println("la distance entre ces 2 villes est:" distance[i][j] "km" );
  26. }
  27. }
  28. }
  29. public static void main(String[] args) {
  30. Ville v1 = new Ville("Paris" );
  31. Ville v2 = new Ville("Angers" );
  32. Ville v3 = new Ville("Bordeaux" );
  33. Ville v4 = new Ville("Clermont" );
  34. Ville v5 = new Ville("Montpellier" );
  35. Ville v6 = new Ville("Nice" );
  36. Ville v7 = new Ville("Strasbourg" );
  37. }


Message édité par Profil supprimé le 18-10-2012 à 14:57:58
Reply

Marsh Posté le 18-10-2012 à 14:51:35   

Reply

Marsh Posté le 19-10-2012 à 11:29:30    

A l'arrache en 5 minutes, et largement perfectible ...
 

Code :
  1. package app.ville;
  2. public class Ville {
  3. public int id;
  4. public String nom ;
  5. public Ville(int id, String nom){
  6.  this.id=id;
  7.  this.nom=nom;
  8. }
  9. }


 

Code :
  1. package app.ville;
  2. public class CalculDistanceApp {
  3. public static void main(String[] args) {
  4.  int distance[][] = new int [2][2];
  5.  Ville Paris = new Ville(0, "Paris" );
  6.  Ville Angers = new Ville(1, "Angers" );
  7.  //initialisation des distances
  8.  distance[Paris.id][Angers.id] = distance [Angers.id][Paris.id] = 303;
  9.  distance[Angers.id][Angers.id] = distance [Paris.id][Paris.id] = 0;
  10.  //test
  11.  System.out.println("la distance entre " + Paris.nom + " et " + Angers.nom + "="  + distance[Paris.id][Angers.id] );
  12. }
  13. }


Reply

Marsh Posté le 22-10-2012 à 03:27:59    

willy le kid a écrit :

A l'arrache en 5 minutes, et largement perfectible ...
 

Code :
  1. package app.ville;
  2. public class Ville {
  3. public int id;
  4. public String nom ;
  5. public Ville(int id, String nom){
  6.  this.id=id;
  7.  this.nom=nom;
  8. }
  9. }


 

Code :
  1. package app.ville;
  2. public class CalculDistanceApp {
  3. public static void main(String[] args) {
  4.  int distance[][] = new int [2][2];
  5.  Ville Paris = new Ville(0, "Paris" );
  6.  Ville Angers = new Ville(1, "Angers" );
  7.  //initialisation des distances
  8.  distance[Paris.id][Angers.id] = distance [Angers.id][Paris.id] = 303;
  9.  distance[Angers.id][Angers.id] = distance [Paris.id][Paris.id] = 0;
  10.  //test
  11.  System.out.println("la distance entre " + Paris.nom + " et " + Angers.nom + "="  + distance[Paris.id][Angers.id] );
  12. }
  13. }




bonjour merci pour l'aide, je suis entrain d'avancer sur mes débuts de cours en ce moment, cette méthode marche sûrement et je suis pas pro mais je pense qu'on peut optimiser tout ça et question pourquoi des packages? je pensais à un truc style si on pourrait pas faire un simple vecteur qui prend des villes, et une methode setdistance qui renvoie une distance exacte entre 2  villes, avec ça moi dérrière je me débrouillerai par l'algo de dijkstra de trouver les plus courts chemins partant de paris pour faire le tour et revenir à la ville initiale sans avoir à repasser 2 fois par une même ville ^^, mais la mise en place des classes de base et méthode c'est une autre histoire ^^

Reply

Marsh Posté le 22-10-2012 à 11:05:43    


 
Ca n'apporte rien au code que j'ai posté.
Le premier avantage des packages est le gain en lisibilité en organisant les classes par "centre d'intêret". Mais le package que j'ai donné n'est pas très judicieux (app.ville = application sur les villes)
 
 
 
 
Si tu es un as de l'analyse numérique et des algos, fais toi plaisir.
Tu peux implémenter comme tu veux les distance[i][j]=<distance à calculer>
Moi j'ai juste essayé de mettre en place un bout de code qui fonctionne avec des classes java pour gérer les villes et les distances en partant de ton embryon de code.
Je te conseille quand même de développer une première version dans ton langage préféré, pour t'assurer que tu maitrises l'algo, puis de porter vers java.  
Perso j'ai commencé le java (au siècle dernier) en faisant un portage de code d'interpolation par spline cubique de fortran vers java.
 
 
 
 
 

Reply

Marsh Posté le 22-10-2012 à 16:40:22    

un peu hors sujet si ton objectif c'est de t'amuser avec les tableau
 
tu peux tout aussi bien avoir une classe ville avec comme property une instance latlng{latitude, longitude} et utiliser haversine ou equirectangular pour calculer les distances.
 
a partir de la tu peux generer des graphes et moduler les couts.


---------------
Plop !
Reply

Marsh Posté le 23-10-2012 à 00:25:38    

willy le kid a écrit :


 
Ca n'apporte rien au code que j'ai posté.
Le premier avantage des packages est le gain en lisibilité en organisant les classes par "centre d'intêret". Mais le package que j'ai donné n'est pas très judicieux (app.ville = application sur les villes)
 
 


 

willy le kid a écrit :


 
Si tu es un as de l'analyse numérique et des algos, fais toi plaisir.
Tu peux implémenter comme tu veux les distance[i][j]=<distance à calculer>
Moi j'ai juste essayé de mettre en place un bout de code qui fonctionne avec des classes java pour gérer les villes et les distances en partant de ton embryon de code.
Je te conseille quand même de développer une première version dans ton langage préféré, pour t'assurer que tu maitrises l'algo, puis de porter vers java.  
Perso j'ai commencé le java (au siècle dernier) en faisant un portage de code d'interpolation par spline cubique de fortran vers java.
 
 
 
 
 


Mercii vraiment pour tous les détails et explications, c'est clair net et concis, c'est aimable, encore Arigato Willy :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed