Java: elementi non duplicati sotto la diagonale di una matrice

Tema 79

Scrivere un metodo creaArrayConElementiSottoDiagonalePrincipaleNonDuplicati che riceve in ingresso una matrice quadrata M e restituisce un array V contenente gli elementi di M al di sotto della diagonale principale senza duplicati.

Ad esempio, sia M la matrice così costituita

0 1 2 3
4 5 6 7
8 9 10 11
18 21 9 0

allora creaArrayConElementiSottoDiagonalePrincipaleNonDuplicati (M) darà

4 8 9 18 21

 public class tema79 { public static int[] creaArrayConElementiSottoDiagonalePrincipaleNonDuplicati (int[][] M) { // approntiamo un'array temporaneo in cui andremo a inserire gli elementi che // soddisfano il requisito // nell'ipotesi che siano tutti elementi non duplicati avremo bisogno al massimo // della seguente dimensione int[] arrayTemporaneo = new int[(M.length * M.length - M.length) / 2]; // nel nostro caso (4 x 4 - 4) / 2 = 6 // inizializziamo un intero per scorrere l’array int indice = 0; // scorriamo la matrice con opportuni indici in modo da accedere solo agli // elementi richiesti for (int i = 0; i < M.length; i++) for (int j = 0; j < i; j++) { boolean presente = false; // con un ciclo scorriamo l’array spingendoci fino al valore che assume di volta // in volta la variabile indice for (int h = 0; h < indice && !presente; h++) // verifichiamo di non inserire nell'array elementi già caricati if (arrayTemporaneo[h] == M[i][j]) presente = true; // se un elemento non risulta già caricato nell’array provvediamo a inserirlo if (!presente) { arrayTemporaneo[indice] = M[i][j]; indice++; } } // creiamo l'array con la giusta dimensione in cui inserire gli elementi // selezionati int[] arrayFinale = new int[indice]; for (int i = 0; i < arrayFinale.length; i++) arrayFinale[i] = arrayTemporaneo[i]; return arrayFinale; }  public static void visualizzaArray (int[] V) { for (int i = 0; i < V.length; i++) System.out.print(V[i] + " "); System.out.println(); }  /* Applicazione di prova */  public static void main(String[] args) { int[][] M = new int[][]{{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}, {18,21,9,0}}; int[] V = creaArrayConElementiSottoDiagonalePrincipaleNonDuplicati (M); visualizzaArray (V); } }     

Commenti

commenti