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
allora creaArrayConElementiRipetutiEsattamentePvolte (M,2) darà
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

  1. Qual è lo scopo del metodo `creaArrayConElementiRipetutiEsattamentePvolte`?
  2. 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.

  3. Come viene verificata la presenza di un elemento nella matrice?
  4. 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.

  5. Qual è la logica per evitare duplicati nell'array finale?
  6. 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.

  7. Come viene creato l'array finale a partire dall'array temporaneo?
  8. 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.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community