Fondamenti di Informatica I
Corso di Laurea in Ingegneria Informatica e Automatica
Esercizi su array
La classe Esperimento realizzata con Array
Parte 1
Modificare la classe Esperimento
dell'esercitazione 5 rappresentando
internamente i valori dell'esperimento mediante un array di interi, ma mantenendo
la stessa interfaccia pubblica. Ovvero, i dati di un esperimento vengono forniti
sotto forma di una stringa di testo contenente valori interi (almeno uno) separati
da spazi. La classe Esperimento
deve avere le seguenti funzionalità:
- creazione di un esperimento a partire da una stringa contenente i valori;
- calcolo e restituzione del numero di valori;
- calcolo e restituzione della somma dei valori;
- calcolo e restituzione della media (in
double
) dei valori;
- calcolo e restituzione del minimo dei valori;
- calcolo e restituzione del massimo dei valori.
Suggerimento: per
la creazione di un esperimento a partire da una stringa si utilizzi di nuovo la
classe StringTokenizer
, e in particolare il metodo
countTokens
per contare il numero di interi nella stringa.
Aggiungere inoltre le seguenti funzionalità:
- verifica dell'uguaglianza di due esperimenti: due esperimenti sono uguali
se memorizzano gli stessi valori nello stesso ordine;
- verifica della similitudine di due esperimenti: due esperimenti sono simili
se memorizzano gli stessi valori, anche in un diverso ordine e con molteplicità
diversa;
- restituzione dell'esperimento concatenazione di due esperimenti,
ovvero un nuovo esperimento rappresentato da un array ottenuto giustapponendo
i due array che rappresentano i due esperimenti;
- verifica della presenza tra i valori di un esperimento di un particolare
valore passato come parametro;
- conteggio delle occorrenze di un dato valore passato come parametro;
- verifica della presenza di valori doppioni nella serie dei dati (ovvero
di almeno un valore che compare più volte nella sequenza di dati);
- stampa di un istogramma di asterischi corrispondenti ai valori dei dati
di un esperimento: ogni riga deve contenere un numero di '
*
'
proporzionale al valore di ciascun dato sperimentale, scalato in modo che
al valore massimo corrispondano 80 '*
'. Per i valori negativi
non deve essere stampato alcun asterisco.
Implementare infine il metodo toString
che restituisce una
stringa contenente la sequenza dei valori dell'esperimento.
Parte 2
Scrivere un programma cliente della classe Esperimento
, che
- crei due esperimenti leggendo i dati da tastiera;
- restituisca il numero, la somma, la media, il minimo e il massimo dei
valori per ciascuno dei due esperimenti;
- verifichi se i due esperimenti sono uguali, stampando un messaggio
opportuno;
- nel caso i due esperimenti non siano uguali, verifichi se sono simili,
stampando un messaggio opportuno;
- construisca l'esperimento concatenazione dei due esperimenti;
- legga da tastiera un valore intero e verifichi se è presente tra i valori
dell'esperimento concatenazione, stampando un messaggio opportuno; se
l'elemento è presente, deve essere stampato anche il numero di occorrenze;
- verifichi se nell'esperimento concatenazione sono presenti doppioni;
- stampi l'istogramma dell'esperimento concatenazione.
Per la
creazione di un esperimento leggendo i dati da tastiera, si utilizzi un
opportuno metodo statico che legga un insieme di valori interi invocando
ripetutamente JOptionPane.showInputDialog
, finché l'utente preme il
bottone Cancel
, impacchetti gli interi letti in una stringa
separati da spazi, crei poi un oggetto della classe Esperimento
e
restituisca tale oggetto.