Java: sottomatrice con elementi di indici pari o dispari

Tema 105

Scrivere un metodo eliminaUltimaColonnaEdEstraiElementiConIndiciEntrambiPariOdispari che riceve una matrice quadrata di interi M e restituisce una sottomatrice escludendo l’ultima colonna se la dimensione è dispari e contenente solo gli elementi di M i cui indici di riga e di colonna sono entrambi pari oppure entrambi dispari.

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

3 15
9 4
7 6
1 2
3 33

 public class tema105{ public static int[][]eliminaUltimaColonnaEdEstraiElementiConIndiciEntrambiPariOdispari (int[][] M){ // dichiariamo una nuova matrice con righe pari a quelle di M e colonne pari a // metà di quelle di M int[][] nuovaMatrice = new int[M.length][M.length/2]; // prepariamo un intero che inizializzeremo in modo opportuno per eliminare // l’ultima colonna // nel caso in cui la dimensione di M sia dispari int discriminante; // verifichiamo se la dimensione della matrice è pari o dispari if (M.length % 2 == 1) // nel caso la dimensione sia dispari poniamo il valore del discriminante a 1 discriminante = 1; else discriminante = 0; // iniziamo a scorrere la matrice M riga per riga for (int i = 0; i < M.length; i++){ // inizializziamo un indice per scorrere le colonne della nuova matrice int indice = 0; for (int j = 0; j < M.length-discriminante; j++) // appena sarà trovato un elemento i cui indici siano entrambi pari o entrambi // dispari if (i % 2 == j % 2){ // tale element sarà collocate nella nuova matrice nuovaMatrice[i][indice] = M[i][j]; indice++;} } 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 = {{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}}; visualizzaMatrice (eliminaUltimaColonnaEdEstraiElementiConIndiciEntrambiPariOdispari (M)); } }     

Commenti

commenti