Free University of Bolzano/Bozen
Faculty of Computer Science - Bachelor in Applied Computer Science
Bachelor in Production Engineering
Introduction to Programming - A.A. 2006/2007
Esercitazione 7
Istruzioni di ciclo e Array
Esercizio 7A
Progettare e realizzare una classe Esperimento
adatta a
rappresentare misurazioni della temperatura. I dati di un esperimento vengono
forniti sotto forma di una stringa di testo contenente valori interi (almeno
uno) separati da spazi. I valori vengono rappresentati internamente mediante
un array di interi.
La classe Esperimento
deve esportare 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.
Esercizio 7B
Aggiungere alla classe Esperimento
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 dell'istrogramma di un esperimento, ovvero di un grafico di
asterischi corrispondenti ai valori dei dati dell'esperimento: ogni riga
deve contenere un numero di asterischi (
*
) proporzionale al
valore di ciascun dato sperimentale, scalato in modo che al valore massimo
corrispondano 80 asterischi. Per i valori negativi non deve essere
stampato alcun asterisco. Per i valori negativi deve essere stampato solo
un singolo segno meno (-
).
Implementare infine il metodo toString
che restituisce una
stringa contenente la sequenza dei valori dell'esperimento.
Soluzione di 7A e 7B
Esercizio 7C
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()
(oppure il
metodo nextLine()
o next()
della
classe Scanner
), finché l'utente preme il
bottone Cancel
,
- impacchetti gli interi letti in una stringa separati da spazi,
- crei poi un oggetto della classe
Esperimento
invocando il costruttore di tale classe,
- e restituisca tale oggetto.
Soluzione