Java: cancellazione riga e colonna di una matrice

Tema 82

Scrivere un metodo eliminaUnaRigaEunaColonna che riceve in ingresso una matrice quadrata di interi M e due interi R e C e restituisce una matrice Q ottenuta da M eliminando la riga R e la colonna C.

Ad esempio, sia M la matrice così costituita

6 4 11 9 12 2 1 10 7 10 14 21 17 1 4 8 10 13 3 1 10 2 12 10 30

allora eliminaUnaRigaEunaColonna (M,1,2) restituisce la matrice

6 4 9 12
14 21 1 4
8 10 3 1
10 2 10 30

 public class tema82{ public static int[][]  eliminaUnaRigaEunaColonna (int [][] M, int R, int C) { // approntiamo una matrice le cui dimensioni saranno diminuite di 1 rispetto // alla matrice M int [][] Q = new int[M.length-1][M[0].length-1]; // creiamo un indice per le righe della nuova matrice int indiceRiga = 0; // creiamo un indice per le colonne della nuova matrice int indiceColonna; // iniziamo a scorrere le righe della matrice M for (int i = 0; i < M.length; i++) { // ci accertiamo che l’indice di riga non sia uguale al parametro fornito nel // metodo if (i != R) { // in tal caso inzializziamo l’indice per scorrere le colonne della matrice Q indiceColonna = 0; // avviamo un ciclo per le colonne della matrice M for (int j = 0; j < M[0].length; j++) // ci accertiamo che l’indice di colonna non sia uguale al parametro fornito nel // metodo if (j != C) { // se l’elemento ha soddisfatto i requisiti lo collochiamo nella matrice Q Q[indiceRiga][indiceColonna] = M[i][j]; // incrementiamo progressivamente gli indici di Q indiceColonna++; } indiceRiga++; } } return Q; } 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[][]{{6,4,11,9,12},{8,13,10,7,10},{14,21,17,6,4}, {8,10,13,6,7},{10,17,12,10,30}}; int[][] Q = eliminaUnaRigaEunaColonna (M,1,2); visualizzaMatrice (Q); } }     

Commenti

commenti