Java: dimezzare una matrice e azzerare elementi

Tema 80

Scrivere un metodo dimezzaMatriceEazzeraElementiPresentiInArray che riceve in ingresso una matrice quadrata M e un array V e restituisce la matrice Q ottenuta dalle ultime M.length/2 colonne di M e contenente i corrispondenti elementi di M che non sono presenti nell’array V, 0 altrimenti.

Ad esempio, siano M e V rispettivamente una matrice e un array così costituiti

1 3 0 6
2 1 7 0
4 3 1 2
8 1 1 0
5 2 7 3

allora dimezzaMatriceEazzeraElementiPresentiInArray (M,V) darà

0 6
0 0
1 0
1 0

 public class tema80 { // approntiamo un metodo per verificare la presenza di un elemento in un array public static boolean isPresente (int[] A, int k) { for (int i = 0; i < A.length; i++) if (A[i] == k) return true; return false; }  public static int[][] dimezzaMatriceEazzeraElementiPresentiInArray (int[][] M, int[] V) { // approntiamo una matrice che avrà lo stesso numero di righe di M e un numero // di colonne pari alla metà di // quelle di M int[][] nuovaMatrice = new int[M.length][M.length / 2]; // calcoliamo una quantità “delta” che ci servirà per indirizzare in maniera // opportuna l’indice del ciclo con // cui scorreremo le colonne della matrice M // “delta” è uguale alla differenza tra la dimensione della matrice M e la // dimensione della nuova matrice int delta = M.length - nuovaMatrice[0].length; for (int i = 0; i < nuovaMatrice.length; i++) { for (int j = 0; j < nuovaMatrice[0].length; j++) { if (isPresente(V, M[i][delta + j])) // se un elemento della matrice è presente nell’array nuovaMatrice [i][j] = 0; // poniamo uguale a 0 la corrispondente posizione nella nuova matrice else nuovaMatrice [i][j] = M[i][delta + j]; } } return nuovaMatrice; }  public static void visualizzaMatrice (int[][] M) { for (int i = 0; i < M.length; i++) { for (int j = 0; j < M[i].length; j++) System.out.print(M[i][j] + " "); System.out.println();} }  /* Applicazione di prova */  public static void main(String[] args) { int[][] M = new int[][]{{1,3,0,6},{2,1,7,0},{4,3,1,2},{8,1,1,0}}; int[] V = new int[]{5,2,7,3}; int[][] Q = dimezzaMatriceEazzeraElementiPresentiInArray (M,V); visualizzaMatrice (Q); } }     

Commenti

commenti