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.