Java: elementi maggiori di k nelle colonne pari di una matrice

Tema 83

Scrivere un metodo creaArrayConElementiInColonnePariMaggioriDelParametroK che riceve in ingresso una matrice di interi M e un intero k e restituisce un array contenente tutti gli elementi di M strettamente maggiori di k presenti sulle colonne pari. Si consideri la colonna di indice 0 una colonna pari.

Ad esempio, sia M la matrice così costituita

1 3 7 9 6
2 4 12 5 13
14 18 11 1 4
3 1 1 8 2
0 12 25 4 5

allora creaArrayConElementiInColonnePariMaggioriDiK(M, 9) darà

14 12 11 25 13

 public class tema83{ public static int[] creaArrayConElementiInColonnePariMaggioriDiK (int[][] M, int k) { // il numero di colonne pari è esattamente la metà del numero di colonne totali int numeroColonnePari = M[0].length / 2; // ma se la dimensione della matrice è dispari dobbiamo aggiungere un’ulteriore // colonna if (M[0].length % 2 == 1) numeroColonnePari += 1; // approntiamo un array temporaneo che nel caso estremo avrà dimensione pari al // seguente calcolo int[] arrayTemporaneo = new int[M.length * numeroColonnePari]; int indiceArray = 0; for (int j = 0; j < M[0].length; j += 2) for (int i = 0; i < M.length; i++) if (M[i][j] > k) { // collochiamo nell’array temporaneo gli elementi che soddisfano il requisito arrayTemporaneo[indiceArray] = M[i][j]; indiceArray++; } // adesso approntiamo l’array finale con la giusta dimensione int[] arrayFinale = new int[indiceArray]; for (int i = 0; i < arrayFinale.length; i++) // trasferiamo gli elementi dall’array temporaneo all’array finale 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[][]{{1,3,7,9,6},{2,4,12,5,13},{14,18,11,1,4},{3,1,1,8,2},{0,12,25,4,5}}; int[] V = creaArrayConElementiInColonnePariMaggioriDiK (M, 7); visualizzaArray (V); } }     

Commenti

commenti