Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Canale G-O, A.A. 2002/03
Esercitazione 7
Array
Esercizio 7A
Modificare la classe Esperimento
dell'Esercizio 5B
(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. Se il valore massimo
è negativo deve essere stampato solo un opportuno messaggio.
Implementare infine il metodo toString
che restituisce una
stringa contenente la sequenza dei valori dell'esperimento.
Soluzione
Esercizio 7B
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.
Soluzione