Laboratorio di Programmazione: Esercitazione 8
Insiemi rappresentati come array ordinati privi di elementi ripetuti
Tenendo presente l'algoritmo di fusione di due array ordinati visto a lezione,
si definiscano (ad esempio all'interno di una classe ArrayOrdinatiUtil)
i due metodi statici seguenti:
- Un metodo intersezione il quale, presi come argomenti due array pieni ordinati di interi,
ognuno privo di elementi ripetuti, costruisca e restituisca un array (pieno) ordinato privo
di elementi ripetuti che rappresenti l'intersezione insiemistica dei due array argomenti.
- Un metodo unione il quale, presi come argomenti due array pieni ordinati di interi,
ognuno privo di elementi ripetuti, costruisca e restituisca un array (pieno) ordinato privo
di elementi ripetuti che rappresenti l'unione insiemistica dei due array argomenti.
Nota: In entrambi i metodi la lunghezza dell'array risultato non è determinabile
all' inizio del metodo; il metodo deve allora dapprima allocare un array di dimensione
uguale alla massima lunghezza possibile del risultato, riempirlo in generale solo parzialmente,
e alla fine ricopiare il risultato in un array della lunghezza esatta (che verrà restituito
come risultato).
Insiemi rappresentati come array parzialmente riempiti, ordinati, e privi di elementi ripetuti
Si definisca, modificando la classe IntArrayParziale, una nuova classe
IntArrayOrdinato tale che ogni sua istanza rappresenti un insieme di interi
come un array parzilamente riempito, ordinato, e senza elementi ripetuti.
In particolare, si modifichi il metodo aggiungiElemento in modo che esso effettui
l'inserimento ordinato dell'elemento al posto giusto; si modifichi inoltre il costruttore
avente come argomento un array in modo che esso, richiamando il metodo aggiungiElemento,
garantisca che l'array parziale creato sia ordinato e senza elementi ripetuti.
Si definiscano inoltre in tale classe due metodi
intersezione e unione, analoghi ai precedenti,
i quali prendano ciascuno come argomento un oggetto della classe
IntArrayOrdinato e costruiscano e restituiscano
un nuovo oggetto della stessa classe che rappresenti rispettivamente
l'intersezione o l'unione fra l'oggetto argomento e l'oggetto this.