Java: sottomatrice di matrice senza colonna e riga centrale

Tema 88

Scrivere un metodo creaArrayConQuattroQuadrantiDellaMatriceEscludendoElementiCentrali che riceve in ingresso una matrice quadrata di interi M di dimensione dispari, e restituisce un array V contenente gli elementi situati nei quadranti che si ottengono da M escludendo la riga centrale e la colonna centrale.

Ad esempio, sia M la matrice così costituita

3 18 15 7 2
1 9 11 4 6
7 2 6 3 5
5 1 25 2 1
3 2 33 4 4

allora creaArrayConQuattroQuadrantiDellaMatriceEscludendoElementiCentrali(M) darà

3 18 1 9 7 2 4 6 5 1 3 2 2 1 4 4

 public class tema88{ public static int[]creaArrayConQuattroQuadrantiDellaMatriceEscludendoElementiCentrali (int[][] M){ // dichiariamo un array la cui dimensione sarà data dal seguente calcolo int[] V = new int[M.length * M.length - 2* M.length + 1]; // poichè l’array dovrà ospitare gli elementi provenienti dai quattro quadranti // della matrice // approntiamo un valore che sarà pari a ogni porzione di array da riempire int porzione = V.length/4; // prepariamo un indice per la scansione dell’array int indice = 0; // cominciamo a scorrere la matrice for(int i = 0; i < M.length /2; i++) for(int j = 0; j < M.length /2; j++){ // da questo momento iniziamo a inserire gli elementi nell’array // con la seguente istruzione riempiamo la prima porzione dell’array V[indice] = M[i][j]; // con la seguente istruzione riempiamo la seconda porzione dell’array che // inizia esattamente alla distanza // di V.length/4 dal primo elemento V[indice + porzione] = M[i][ M.length /2 + 1 + j]; // con la seguente istruzione riempiamo la terza porzione dell’array che inizia // esattamente alla distanza // di 2 volte il valore di V.length/4 dal primo elemento V[indice + 2*porzione] = M[M.length /2 + 1 + i][j]; // con la seguente istruzione riempiamo la quarta porzione dell’array che inizia // esattamente alla distanza // di 3 volte il valore di V.length/4 dal primo elemento V[indice + 3*porzione] = M[M.length /2 + 1 + i][ M.length /2 + 1 + j]; // incrementiamo l’indice indice++;} return V; }  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 = {{3,18,15,7,2}, {1,9,11,4,6}, {7,2,6,3,5}, {5,1,25,2,1}, {3,2,33,4,4}}; visualizzaArray (creaArrayConQuattroQuadrantiDellaMatriceEscludendoElementiCentrali (M)); } }     

Commenti

commenti