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: 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.