codice:
import java.io.*;
public class Cluster {
public static void main(String args[])
{
try{
// preparo i file input/output
FileReader inputcluster = new FileReader("cluster.txt");
BufferedReader cluster = new BufferedReader(inputcluster);
FileReader inputcerchi = new FileReader("cerchi.txt");
BufferedReader cerchi = new BufferedReader(inputcerchi);
FileWriter fileOutput = new FileWriter("output.txt");
PrintWriter output = new PrintWriter(fileOutput);
// lettura della riga di coordinate dei punti (da cluster.txt)
String cPunto = cluster.readLine();
String[] coordinataP = cPunto.split("\\s");
//converto in double
double xPunto = Double.parseDouble(coordinataP[0]);
double yPunto = Double.parseDouble(coordinataP[1]);
//preparo l'output
output.println("Cluster (" + xPunto + " " + yPunto + "): ");
//lettura di coordinate da cerchi.txt
String cCerchio = cerchi.readLine();
String[] coordinataC = cCerchio.split("\\s");
// conversione in double delle coordinate
double xCerchio = Double.parseDouble(coordinataC[0]);
double yCerchio = Double.parseDouble(coordinataC[1]);
double rCerchio = Double.parseDouble(coordinataC[2]);
// verifica se il cerchio contiene il punto
// calcolanto la distanza tra il centro del cerchio e il punto
double distanza = pitagora(xPunto, yPunto, xCerchio, yCerchio);
// se la distanza è minore o uguale al raggio
// il cerchio contiene il punto
if (distanza <= rCerchio)
output.println(xCerchio + " , " + yCerchio + " raggio: " + rCerchio);
output.close();
}
catch (IOException e){
System.out.println("Errore: " + e);}
}
public static double pitagora(double xPunto, double yPunto, double xCerchio, double yCerchio)
{
return (Math.rqst(((xPunto - xCerchio) * (xPunto - xCerchio)) + ((yPunto - yCerchio) * (yPunto - yCerchio))));
}
}
Il codice che ho scritto è imperfetto, perchè legge e confronta solo la
prima riga, dovrei mettere un doppio ciclo che mi legge il punto, legge
il cerchio, confronta le coordinate, legge un altro cerchio, confronta
le coordinate, finiti i cerchi legge un altro punto e riparte con la
lettura e il confronto con i cerchi.
cosa uso per mettere un ciclo?
inoltre, dovrei stampare anche ogni cluster(punto) e le coordinate del
cerchio più vicino per ognuno, cosa posso fare per memorizzare (e non
solamente stampare) i cerchi che contengono il punto?(non c'è un numero
predefinito di cerchi e punti, quindi dovrebbe essere una soluzione
adatta) in modo che poi posso trovare il più vicino?
scusate le richieste che potranno essere banali, ma sono alle prime armi
e questo esercizio era un pò più laborioso degli altri che ho fatto fin'ora
Grazie dell'aiuto che mi avete dato fino ad ora(spero che mi aiuterete anche per quest'altre cose)