Java: diagonali di una matrice senza elemento centare

Tema 87

Scrivere un metodo creaMatriceEstraendoDiagonaliEsclusoElementoCentrale che riceve in ingresso una matrice quadrata di interi M di dimensione dispari e restituisce una matrice contenente gli elementi di M presenti sulle diagonali escluso l’elemento centrale.

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 creaMatriceEstrandoDiagonaliEsclusoElementoCentrale (M) darà

1 6
4 5
8 1
5 0

 public class tema87 { public static int[][] creaMatriceEstraendoDiagonaliEsclusoElementoCentrale (int[][] M) { // approntiamo la matrice in cui posizioneremo gli elementi che soddisfano il // requisito // tale matrice avrà un numero di righe pari a quello di M meno 1 e numero di // colonne pari a 2 int[][] nuovaMatrice = new int[M.length - 1][2]; // inizializziamo un intero "delta" che useremo al momento opportuno per saltare // direttamente sugli elementi // giusti con i quali riempiremo la prima colonna // della nuova matrice int delta = 0; // avviamo il ciclo con cui preleveremo gli elementi della diagonale princiaple for(int i = 0; i < nuovaMatrice.length; i++) { // quando l'indice di scansione sarà uguale al valore centrale di M, "delta" // sarà portato al valore 1 if (i == M.length / 2) delta = 1; // e questo ci consentirà di saltare l’elemento in posizione centrale nuovaMatrice[i][0] = M[i + delta][i + delta]; } // inizializziamo un intero "salto" che useremo al momento opportuno per saltare // direttamente sugli elementi // giusti con i quali riempiremo la seconda // colonna della nuova matrice int salto = 0; // avviamo il ciclo con cui preleveremo gli elementi della diagonale secondaria for(int i = 0; i < nuovaMatrice.length; i++) { // quando l'indice di scansione sarà uguale al valore centrale di M, "salto" // sarà portato al valore 1 if (i == M.length / 2) salto = 1; nuovaMatrice[i][1] = M[i + salto][M.length - 1 - i - salto]; } 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,7,9,6},{2,4,12,5,13},{14,18,11,1,4},{3,1,1,8,2},{0,12,25,4,5}}; int[][] Q = creaMatriceEstraendoDiagonaliEsclusoElementoCentrale (M); visualizzaMatrice (Q); } }     

Commenti

commenti