Paolo Boldi
Problemi per la lezione del 12/11
- [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.
- [Media armonica di frazioni] Scrivere un programma che usi la classe
Frazione
(nel pacchetto prog.utili
) e operi come segue:
- legge una sequenza di frazioni (numeratore e denominatore), terminata quando il numeratore inserito è 0;
- stampa la loro media armonica; la media armonica è il reciproco della media aritmetica dei reciproci.
- [Rettangoli, quadrati e aree / II parte] Modificate il programma della lezione precedente
relativo a rettangoli e quadrati, in modo che l'output sia il seguente:
Rettangolo -- base = 3.0; altezza = 5.0
Quadrato -- lato = 4.0
Rettangolo -- base = 1.0; altezza = 17.0
Suggerimento: per questo esercizio dovete sfruttare il polimorfismo e il predicato instanceof.
- [Figura di area massima] Scrivete un'applicazione che permetta all'utente di inserire una sequenza di figure (siano essi
quadrati, rettangoli o cerchi), scegliendo ogni volta quale figura introdurre e inserendo i dati necessari ad identificarla.
Il programma alla fine deve stampare la figura di area massima (o una di esse, se ci sono più figure di area massima).
Ad esempio (le parti in grassetto sono inserite dall'utente):
0) Termina, 1) Rettangolo, 2) Quadrato, 3) Cerchio: 1
Base: 5
Altezza: 3
0) Termina, 1) Rettangolo, 2) Quadrato, 3) Cerchio: 2
Lato: 4
0) Termina, 1) Rettangolo, 2) Quadrato, 3) Cerchio: 1
Base: 4
Altezza: 5
0) Termina, 1) Rettangolo, 2) Quadrato, 3) Cerchio: 3
Raggio: 5
0) Termina, 1) Rettangolo, 2) Quadrato, 3) Cerchio: 0
raggio = 5.0
- [Conversione numeri] Scrivete un'applicazione che, presa in ingresso una
stringa contente numeri di tre cifre al massimo, stampi in uscita la
stringa ottenuta sostituendo ai numeri la loro rappresentazione in parole (senza tener conto delle eccezioni).
Per es. data la stringa: "oggi ho comprato 16 mele per 382 soldi"
l'applicazione deve produrre la stringa "oggi ho comprato diecisei mele per trecentoottantadue soldi".
Suggerimento 1: potete utilizzare il metodo static isDigit della classe
involucro Character per identificare le cifre presenti tra i caratteri
della stringa.
Suggerimento 2: nel caso vi dovesse servire (ma ne potete fare a meno), nella classe Integer
c'è un metodo statico che converte una stringa (costituita solo da cifre) in un int: corrisponde
alla funzione C atoi(int).