bonsoir
voici l 'énnoncer du code à realiser:
" Trois habitations les plus prochesComplétez votre programme en définissant une méthodesupplémentaire:int[] troisPlusProches(int x, int y, int[] coordonneesHabitations)qui retourne dans un tableau d’entiers les coordonnées destroishabitations lesplus proches du point de(x,y)donné en argument parmi toutes les habitations3
de la commune (passée en argument). La tableau sera ordonné selon les mêmesconventions que pour la tableau de coordonnées des habitations (cooordonnée enx puis en y).Il sera aussi ordonné de la coordonnée la plus proche à la plus distante.Indication Pour atteindre ce résultat, vous pouvez copier la tableau des coor-données dans un tableau temporairetmpau moyen de l’instructionSystem.arraycopy(coordonneesHabitations, 0, tmp, 0,coordonneesHabitations.length);puis chercher trois fois le point le plus proche danstmp. A chaque fois qu’unpoint le plus proche aura été déterminé il faudra le remplacer par une point tropéloigné pour être à nouveau candidat. Vous prendrez la valeur1000000pourchacune de ces coordonnées (nous supposerons qu’à cette distance on sort de lacommune).Voir l’exemple de déroulement plus bas pour des"


j ' ai mis des prints un peu de partout pour avancer mais la je bloque pour mettre 100 fix0000 à chaque coordonnées x et y pour ma position la plus prêt,je vois bien que j ai 4 dans ma variable distanceMini mais comment ajouter celles ci, ? je ne comprend pourquoi il faut copier le tableau dans un tableau temporaire et ensuite le modifier ,je croyais que l'on ne pouvais pas modifier un tableau fixe ? à moins que j ai mal compris et qu 'il faille simplement ajouter la position mini à temp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
54
55
56
57
58
59
60
61
 
public class DechargeEssai {
 
 
	public static void main(String[] args) {
 
		int [] coordonneesHabitations = {9, 30 ,18, 8, 3, 18, 25 , 36 };
 
		System.out.println("la position dans le tableau du point le plus proche est : "+plusProche(10, 15, coordonneesHabitations));
		System.out.println((troisPlusProches(10, 15, coordonneesHabitations)));
 
	}
	//calcule de la distance de 2 points avec pythagore
	public static double calculerDistance(int x1, int y1, int x2, int y2){
		return Math.sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2));
	}
	//calcul du point le plus proche du point (x,y)
	public static int plusProche(int x ,int y ,int[]coordonneesHabitations) {
 
		double min = Integer.MAX_VALUE;
		int position = 0;
		// on cree une boucle avec pour index un couple de coordonnées  => couple(x = index,y =index+1) donc on parcours la boucle au pas de 2
		for (int index = 0; index < coordonneesHabitations.length-1; index+=2) {
			int xcoor = coordonneesHabitations[index];
			int ycoor = coordonneesHabitations[index+1];
			//on cree une variable distanceMini avec la méthode calculerDistance
			double distanceMini = calculerDistance(x, y, coordonneesHabitations[index],coordonneesHabitations[index+1]);
			System.out.println(xcoor+" "+ycoor);
			System.out.println(distanceMini);
				// condition pour trouver la plus petite distance
				if(distanceMini < min) {
					min = distanceMini;
					position = index;
				}	
 
 
		}
		return position ;	
	}
 
 
	//la méthode doit renvoyer un tableau des 3 habitations les plus proches des points(x, y)
	public static int[] troisPlusProches(int x, int y, int[]coordonneesHabitations ) {
 
		int[] temp = new int[coordonneesHabitations.length];
		System.arraycopy(coordonneesHabitations, 0,temp, 0, coordonneesHabitations.length);
 
		int distanceMIni = plusProche(x, y, temp);
		System.out.println(distanceMIni);
 
 
 
 
 
 
 
		return temp;
	}
 
 
}
merci pour votre guidage