Java: righe pari con somma dispari di matrice

Tema 92

Scrivere un metodo creaMatriceEstraendoRighePariConSommaDispari che riceve in ingresso una matrice di interi M e restituisce una matrice di interi contenente tutte le righe di M di indice pari in cui la somma degli elementi sia dispari.

Ad esempio, sia M la matrice così costituita

1 1 1 1 1
2 1 14 2 1
2 2 2 2 2
1 2 24 3 1
5 5 5 5 5

allora creaMatriceEstraendoRighePariConSommaDispari(M) darà

1 1 1 1 1
5 5 5 5 5

 public class tema92{ // prepariamo un metodo di supporto per verificare se la somma degli elementi di // una riga è dispari public static boolean isDispariLaSommaDiQuestaRiga (int[][] M, int indiceRiga){ int somma = 0; for (int j = 0; j < M.length; j++) somma += M[indiceRiga][j]; if (somma %2 == 0) return false; return true; } // ci serviamo di un altro metodo di supporto per calcolare il numero di righe // che soddisfano il requisito public static int calcolaQuanteRigheHannoSommaDispari (int[][] M) { int numeroRighe =0; for (int i = 0; i < M.length; i+=2) if (isDispariLaSommaDiQuestaRiga (M,i)) numeroRighe++; return numeroRighe; } // creiamo il metodo conclusivo public static int[][]creaMatriceEstraendoRighePariConSommaDispari (int[][] M){ // calcoliamo il numero di righe che dovrà avere la nuova matrice con l'apposito // metodo di supporto int numRighe = calcolaQuanteRigheHannoSommaDispari (M); // creiamo una nuova matrice che avrà numero di righe pari al risultato del // metodo precedente e numero di // colonne pari al numero di colonne di M int [][] nuovaMatrice = new int[numRighe][M.length]; // inizializziamo un indice per scorrere le righe della nuova matrice int scorriRiga = 0; // scorriamo la matrice M una riga per volta for (int i = 0; i < M.length ; i += 2){ // su ogni riga effettuiamo un controllo per verificare che la somma dei suoi // elementi sia dispari if (isDispariLaSommaDiQuestaRiga (M,i)){ // in caso affermativo copiamo gli elementi di quella riga nella nuova matrice for (int j = 0; j < M.length; j++) nuovaMatrice[scorriRiga][j] = M[i][j]; // incrementiamo progressivamente l’indice di riga della nuova matrice scorriRiga++;} } return nuovaMatrice; } public static void visualizzaMatrice (int[][] M) { for (int i=0; i

Commenti

commenti