Calculer distance euclidienne
Fermé
jj1k
Messages postés
30
Date d'inscription
jeudi 8 juin 2017
Statut
Membre
Dernière intervention
3 septembre 2017
-
23 juin 2017 à 14:16
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 23 juin 2017 à 22:50
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 23 juin 2017 à 22:50
A voir également:
- Distance euclidienne formule
- Formule excel - Guide
- Formule de politesse mail anglais - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Formule excel si contient texte alors texte ✓ - Forum Excel
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
23 juin 2017 à 19:32
23 juin 2017 à 19:32
Bonjour,
Rien de nouveau par rapport à tes autres discussions, tu lis ton fichier texte ligne par ligne, tu map avec des objets représentant chaque ligne et tu agrèges les résultats...
Ce qui donne (en considérant les 3 premières villes du fichier)
On peut éventuellement supprimer les couples inutiles en rajoutant un
Rien de nouveau par rapport à tes autres discussions, tu lis ton fichier texte ligne par ligne, tu map avec des objets représentant chaque ligne et tu agrèges les résultats...
import java.awt.Point;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
class Ville {
final int id;
final double x, y;
Ville(String str) {
String[] tab = str.split(",");
id = Integer.parseInt(tab[0]);
x = Double.parseDouble(tab[1]);
y = Double.parseDouble(tab[2]);
}
}
class Parcours {
final int a, b;
final double distance;
Parcours(Ville a, Ville b) {
this.a = a.id;
this.b = b.id;
distance = Point.distance(a.x, a.y, b.x, b.y);
}
public String toString() {
return String.format("(%d,%d)=%f", a, b, distance);
}
}
public class Test{
public static void main(String[] args) throws Exception {
List<Ville> villes = Files.lines(Paths.get("C:/test.txt")).skip(1)
.map(Ville::new).collect(Collectors.toList());
List<Parcours> parcours = villes.stream().flatMap(a ->
villes.stream().map(b -> new Parcours(a, b)))
.collect(Collectors.toList());
System.out.println(parcours);
}
}
Ce qui donne (en considérant les 3 premières villes du fichier)
[(0,0)=0,000000, (0,1)=5,301141, (0,2)=9,036998,
(1,0)=5,301141, (1,1)=0,000000, (1,2)=14,021260,
(2,0)=9,036998, (2,1)=14,02126, (2,2)=0,000000]
On peut éventuellement supprimer les couples inutiles en rajoutant un
filter(b -> a.id < b.id)pour obtenir :
[(0,1)=5,301141, (0,2)=9,036998, (1,2)=14,021260]

23 juin 2017 à 22:33
mais comment je peux récupérer les résultats (les distances) dans un fichier txt ?
23 juin 2017 à 22:50
try (PrintWriter pw = new PrintWriter("C:/result.txt")) { parcours.forEach(pw::println); }