Java: eliminazione di colonne con valori non in un intervallo

Tema 103

Scrivere un metodo creaMatriceEscludendoColonneConElementiMinoriOmaggioriDeiParametri che riceve in ingresso una matrice di interi M e due numeri interi min e max, e restituisce una matrice ottenuta eliminando da M tutte le colonne che presentano almeno un valore minore di min o maggiore di max.

Ad esempio, sia M la matrice così costituita

3 18 15 7
1 9 11 4
7 8 6 8
5 60 25 9

allora creaMatriceEscludendoColonneConElementiMinoriOmaggioriDeiParametri (M, 4, 45)

15 7
11 4
6 8
25 9

 public class tema103{ public static int[][]creaMatriceEscludendoColonneConElementiMinoriOmaggioriDeiParametri (int[][] M, int min, int max){ // creiamo una matrice temporanea con dimensione pari alla stessa matrice M, in // cui inseriremo gli elementi // che soddisfano il requisito; la scelta sulla dimensione è data dal fatto che // potrebbe verificarsi // il caso in cui non vada esclusa nessuna colonna int[][] matriceTemporanea = new int[M.length][M.length]; // creiamo un indice per scorrere le colonne della nuova matrice int indiceColonna = 0; // cominciamo a scorrere la matrice M colonna per colonna for (int j = 0; j < M.length; j++){ // ci serviamo di una variabile boolean per stabilire se una colonna è da // rimuovere boolean colonnaDaRimuovere = false; for (int i = 0; i < M.length; i++){ // controlliamo se esistono elementi che soddisfano il requisito if (M[i][j] < min || M[i][j] > max) // in tal caso poniamo il valore della variabile a TRUE colonnaDaRimuovere = true; } // nel caso contrario if (!colonnaDaRimuovere) { // scorriamo le varie colonne for (int i = 0; i < M.length; i++){ // trasferiamo gli elementi di M nella matrice temporanea matriceTemporanea[i][indiceColonna] = M[i][j];} // e incrementiamo l’indiceColonna indiceColonna++; } } // prepariamo adesso la matrice finale con la giusta dimensione int[][] matriceFinale = new int[M.length][indiceColonna]; // scorriamo la matrice for (int i = 0; i < M.length; i++){ for (int j = 0; j < indiceColonna; j++){ // e trasferiamo gli elementi che erano stati collocati nella matrice temporanea // nella matrice finale matriceFinale[i][j] = matriceTemporanea[i][j];} } return matriceFinale; }  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}, {1,9,11,4}, {7,8,6,8}, {5,60,25,9}}; visualizzaMatrice (creaMatriceEscludendoColonneConElementiMinoriOmaggioriDeiParametri (M,4,45)); } }     

Commenti

commenti