1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public static double calculerDistance(int x1, int y1, int x2, int y2)
{
return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
// ici, je retourne la position de l'habitation la plus proche du couple (x,y) donné
public static int plusProche(int x, int y, int[] coordonneesHabitations)
{
int position = 0;
double min = Integer.MAX_VALUE;
for(int i = 0; i<coordonneesHabitations.length -1; i++)
{
for (int j = i+1; j<coordonneesHabitations.length -1; j++)
{
if((i!=x)&&(j!=y))
{
double distmin = calculerDistance(x,coordonneesHabitations[i],y,coordonneesHabitations[j]);
if(distmin<min)
{ min = distmin;
position = i;
}
}
}
}
return position;
}
// cette partie est celle sur laquelle je butte, car il faut que je copie les données du tableau initiale dans un autre tableau et que je trie ce tableau en recherchant 3 fois le point le couple de point (abscisse et ordonnée) le plus proche du couple (x,y) et retourner le résultat dans un tableau.
Remarque: je n'ai pas terminé le code car je suis à court d'idée.
public static int[] troisPlusProches(int x, int y, int[] coordonneesHabitations)
{
//int position = 0;
double min = Integer.MAX_VALUE;
int[] tmp = new int[0];
System.arraycopy(coordonneesHabitations, 0, tmp, 0,
coordonneesHabitations.length);
for(int i = 0; i<tmp.length -1; i++)
{
for (int j = i+1; j<tmp.length -1; j++)
{
if((i!=x)&&(j!=y))
{
double distmin = calculerDistance(x,tmp[i],y,tmp[j]);
if(distmin<min)
{ min = distmin;
//position = i;
}
}
}
}
return tmp;
} |
Partager