sono sempre io...volevo chiedervi la cortesia di guardare la mia tesina se è corretta stavolta....grazie a tutti!
![]()
import javax.swing.*; //PER I VARI JOPTIONPANE
import java.util.*; //PER ORDINARE L'ARRAY (sort)
import java.io.*; //PER I FILESTREAM
public class nuovo{
//CREAZIONE METODO LEGGERE INPUT
public static int recuperaInt(String messaggio)
{
String numero = JOptionPane.showInputDialog(messaggio);
int conv = Integer.parseInt(numero);
return conv;
}
//CREAZIONE METODO LEGGERE INPUT
public static int calcComb(int n)
{
long combinazioni_l = fattoriale(n)/(fattoriale(n-2)*fattoriale(2)); //CALCOLO COMBINATORIO
int ris = new Long(combinazioni_l).intValue(); //PER INDICE ARRAY
return ris;
}
// CREAZIONE METODO PER IL CALCOLO DEL FATTORIALE
static long fattoriale(long x){
long f=x;
for (long i=x; i>1; i--){
f*=(i-1);
}
return f;
}
// CREAZIONE METODO PER SCRIVERE SUL FILE
public static void salva(String cosa, String cosa_b){
try{
FileOutputStream file = new FileOutputStream("file.txt");
PrintStream Output = new PrintStream(file);
Output.println(cosa);
Output.println(cosa_b);
System.out.println("Scrittura su file eseguita correttamente");
} catch (IOException e){
System.out.println("Errore: "+ e);
System.exit(1);
}
}
public static void main(String[] args) {
int d, n;
// CREO CICLO PER VERIFICARE CHE I NUMERI IMMESSI SIANO ENTRAMBI MAGGIORI DI 0 E N<20
do{
n=recuperaInt("Inserisci il numero di punti (massimo 20):");
d=recuperaInt("Inserisci il numero della dimensione:");
}while (n<0 || d<0 || n>20);
int combinazioni = calcComb(n);
double [][] punti_b = new double[n][d]; // CREO L'ARRAY MULTIDIMENSIONALE CONTENTE I PUNTI
// RIEMPIO L'ARRAY DEI PUNTI
for (int i=0; i<n; i++){
for (int j=0; j<d; j++){
punti_b[i][j]=Math.pow(Math.random(), d); // PUNTI NELL'INTERVALLO [O,1)^d
}
}
double [] sottrazione = new double[combinazioni]; //CREO L'ARRAY PER SALVARE LA DISTANZA
int puntatore_b = 0; // CREO VARIABILE PER INCREMENTO INDICI ARRAY SOTTRAZIONE
double valore=0; //VAR PER LA SOMMATORIA DELLA DIFFERENZA DELLE COORDINATE
//CALCOLO E SALVO LA DIFFERENZA DI TUTTI I PUNTI
for (int i=0; i<n-1; i++){ //N-1 DATO CHE NON DEVO SOTTRARRE L'ULTIMO ELEMENTO
for (int x=i+1; x<n; x++){
for (int f=0; f<d; f++){//PER FARE LA DIFFERENZA DI OGNI COORDINATA
valore += Math.pow(Math.abs(punti_b[i][f]-punti_b[x][f]), 2); //DIFFERENZA COORDINATE
}
double diff = Math.sqrt(valore);
valore=0; //PER AZZERRARE LA SOMMATORIA PRECEDENTE
sottrazione[puntatore_b]=diff; //SALVO NELL'ARRAY LA DIFFERENZA
puntatore_b++;
}
}
Arrays.sort(sottrazione); //ORDINO L'ARRAY IN MANIERA CRESCENTE
System.out.println("La distanza massima tra i punti random scelti a caso è: " +sottrazione[sottrazione.length-1]);
System.out.println("La distanza minima tra i punti random scelti a caso è: " +sottrazione[0]);
String massimo, minimo;
massimo = "La distanza massima tra i punti random scelti a caso è: " +String.valueOf(sottrazione[sottrazione.length-1]);
minimo = "La distanza minima tra i punti random scelti a caso è: "+ String.valueOf(sottrazione[0]);
salva(massimo, minimo);
System.exit(0);
}
}

....grazie a tutti!
