Concetti Chiave
- Il metodo creaArrayConElementiRipetutiEsattamentePvolte restituisce un array di interi con elementi presenti esattamente p volte in una matrice M.
- Viene utilizzato un metodo di supporto per contare le presenze di ciascun elemento nella matrice M, incrementando un contatore ad ogni occorrenza.
- Un array temporaneo viene creato per memorizzare gli elementi che soddisfano la condizione di apparire esattamente p volte, evitando duplicati.
- L'array finale viene creato con la dimensione appropriata e popolato con gli elementi dell'array temporaneo.
- Il metodo include una funzione per visualizzare l'array finale, stampando gli elementi in output.
Tema 99
Scrivere un metodo creaArrayConElementiRipetutiEsattamentePvolte che riceve in ingresso una matrice M e un intero p e restituisce un array di interi contenente gli elementi presenti esattamente p volte in M.Esempio di matrice
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 |
| 7 | 6 | 5 |
public class tema99{ // ci serviamo di un metodo di supporto per calcolare se un elemento è presente // più volte nella matrice public static int presenzaInMatrice (int k, int[][] M){ // inzializziamo un contatore che verrà incrementato ogni volta che un elemento // si ripete int contaPresenze = 0; for (int i = 0; i
Creazione dell'array finale
length; j++){ if (M[ i ][j] == k) contaPresenze++;} } return contaPresenze; } public static int[] creaArrayConElementiRipetutiEsattamentePvolte (int[][] M, int p){ // creiamo un array temporaneo con dimensione massima data dal prodotto delle // due dimensioni // di M, nel caso p fosse uguale a 1 e gli elementi di M fossero tutti distinti int[] arrayTemporaneo = new int[M.length * M[0].length]; // prepariamo un indice per la scansione dell’array finale int indiceArray = 0; // cominciamo a scorrere gli elementi della matrice for (int i = 0; i metodo precedente se un elemento è presente esattamente p // volte if (presenzaInMatrice (M[ i ][j], M) == p){ // con una variabile boolean controlliamo che lo stesso elemento non venga // inserito più volte nell’array boolean giàInserito = false; // scorriamo gli elementi dell’array for (int k = 0; k dimensione pari al valore // raggiunto dall’indice di scansione int[] arrayFinale = new int[indiceArray]; for (int i = 0; i
Visualizzazione dell'array
length; i++){ // trasferiamo gli elementi dell’array temporaneo nell’array finale con la // giusta dimensione arrayFinale[ i ] = arrayTemporaneo[ i ];} return arrayFinale; } public static void visualizzaArray (int[] V) { for (int i = 0; i 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}}; int[]V = creaArrayConElementiRipetutiEsattamentePvolte (M,2); visualizzaArray (V); } }
Domande da interrogazione
- Qual è lo scopo del metodo `creaArrayConElementiRipetutiEsattamentePvolte`?
- Come viene verificata la presenza di un elemento nella matrice?
- Qual è la logica per evitare duplicati nell'array finale?
- Come viene creato l'array finale a partire dall'array temporaneo?
Il metodo `creaArrayConElementiRipetutiEsattamentePvolte` riceve in ingresso una matrice M e un intero p, restituendo un array di interi contenente gli elementi presenti esattamente p volte nella matrice M.
La presenza di un elemento nella matrice viene verificata tramite il metodo di supporto `presenzaInMatrice`, che conta quante volte un elemento k appare nella matrice M.
Per evitare duplicati nell'array finale, viene utilizzata una variabile booleana `giàInserito` che controlla se l'elemento corrente è già presente nell'array temporaneo prima di aggiungerlo.
L'array finale viene creato con dimensione pari al valore raggiunto dall'indice di scansione, e gli elementi vengono trasferiti dall'array temporaneo all'array finale con la giusta dimensione.