Paolo Boldi
Problemi per la lezione dell'8/11
- [Media, varianza e scarto quadratico medio] Scrivete un programma che, dopo aver letto una sequenza di numeri interi (al massimo 100,
terminata dalla lettura di -1), ne determini e stampi la media, la varianza e lo scarto quadratico medio. La varianza è, per definizione, la media dei quadrati
delle differenze fra i valori della sequenza e la media. Lo scarto quadratico medio è la radice quadrata della varianza (calcolabile
mediante il metodo statico sqrt di Math).
- [Frazioni con lo stesso denominatore] Il pacchetto prog.utili contiene una classe di nome Frazione le cui
istanze rappresentano delle frazioni. Dopo averne letto la documentazione, scrivere un programma che operi come segue:
- legge un numero intero n (al massimo 100);
- legge n frazioni;
- stampa una riga per ogni intero che compare come denominatore di una qualche frazione; la riga
stampata per il denominatore xxx ha la seguente forma: "denominatore xxx: somma yyy" dove yyy è la somma
delle frazioni con denominatore xxx.
Ad esempio, se le frazioni introdotte fossero 3/2, 6/8, 13/7, 3/2, 7/2, 1/7 dovrebbe stampare:
denominatore 2: somma 13/2
denominatore 4: somma 3/4
deniminatore 7: somma 2
Nota: si noti che la classe Frazione riduce automaticamente le frazioni ai minimi termini, quindi, ad esempio, una
frazione introdotta come 6/8 viene in realtà rappresentata come 3/4, e quindi risulterà avere denominatore 4.
- [Frazioni con lo stesso denominatore (bis)] Modificare il programma in uno simile che legga le frazioni una per volta (nel formato "xxxx/yyy")
e termini quando viene inserita una stringa vuota. Usate una ArrayList<Frazione> per tenere le frazioni.
- [Identità ciclica] Due stringhe v e w sullo stesso alfabeto sono dette ciclicamente equivalenti sse
esistono due stringhe x,y tali che v=xy e w=yx. È facile vedere che questo definisce una relazione di equivalenza
sul monoide libero, le cui classi si chiamano collane.
Scrivete un programma che, lette due stringhe, determini se sono ciclicamente equivalenti oppure no.
- [Minimo, massimo, moda] Scrivete un programma che, dopo aver letto una sequenza di numeri interi (al massimo 100,
terminata dalla lettura di -1), determini e stampi il valore massimo, il valore minimo e la moda. La moda è il numero che compare
più frequentemente (in caso di parità, uno qualunque dei numeri che compaiono più frequentemente). Ad esempio, se la sequenza introdotta
fosse 3, 12, 7, 12, 7, 5, 2, 7, -1 il programma dovrebbe stampare 12 (massimo), 2 (minimo) e 7 (moda).
Suggerimento: per calcolare la moda conviene, per ciascun elemento del vettore dei numeri letti, determinare quante volte quell'elemento
compaia nell'array, tenendo traccia della candidata moda e della sua frequenza.