E' il secondo for che va in errore.
Nell'ultimo ciclo esterno i punterà all'ultima posizione utile nell'array (se N vale 3, allora i vale 2 e punti[2] è l'ultima posizione utile). Nel secondo for, la prima cosa che fa è valorizzare x come i + 1 e questo genera l'errore (punti[2] - punti[3], ma punti è un array di 3 elementi e non esiste punti[3]!).
La soluzione del problema consiste semplicemente di aggiungere un -1 nel primo for:
Ed è la soluzione corretta: per tutti i valori dell'array tranne l'ultimo, effettua la differenza fra il valore e tutti i suoi successivi (tranne l'ultimo perchè non ha alcun successivo).codice:for(int i=0; i<n-1; i++){ for(int x=i+1; x<n; x++){ double sott = Math.abs(punti[i]-punti[x]); sottr[puntatore] = sott; puntatore++; } }
Ciao.![]()