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
20 Maggio 2015