Paolo Boldi
Problemi per la lezione del 11/11
- [Rimpiazzare] La classe String contiene un metodo che consente di rimpiazzare tutte le occorrenze di un certo
carattere, o di una certa stringa, con un altro carattere, o stringa. Trovate questo metodo consultando la documentazione delle API, e poi scrivete un
programma che operi come segue:
- legge due stringhe, diciamo x e y
- inizia quindi un ciclo di lettura di stringhe: ogni volta che legge una stringa, la
stampa dopo aver sostituito tutte le occorrenze di x con y
- quando l'utente inserisce la stringa vuota, il programma termina.
- [A ritroso] Scrivete un programma che legga un testo di ≤ 100 righe, terminato da una riga vuota,
e che ristampi il testo al contrario (dall'ultima riga alla prima e, per ciascuna riga, dall'ultimo carattere al primo).
Per risparmiare tempo… Per provare questo programma (ed eventualmente anche per i successivi) conviene che predisponiate, mediante un editor di
testo, un file di esempio (cioè, un testo concluso con una riga vuota), e che usiate il meccanismo di redirezione dello
standard input che avete imparato nella prima lezione su Linux.
- [Frazioni con lo stesso denominatore] 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.
- [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).