Homework A.A. 2015/2016
A partire dal 6 Ottobre, e fino alla fine delle lezioni, ogni martedì verranno assegnati degli homework, da svolgere singolarmente e da consegnare via posta elettronica all'indirizzo luca.moscardelli@unich.it mettendo nell'oggetto del messaggio la seguente stringa:
[jmm] Cognome Nome Homework id
dove Cognome e Nome e sono il cognome ed il nome dello studente che consegna, ed id è l'identificativo dell'homework.
Il file consegnato deve essere allegato all'email e deve avere come nome la stessa stringa [jmm] Cognome Nome Homework id
Il file va consegnato in formato di testo semplice; .txt e .java sono estensioni accettabili.
Il file va consegnato in formato di testo semplice; .txt e .java sono estensioni accettabili.
Ad esempio, un possibile file per lo studente Mario Rossi e il primo homework è
[jmm] Rossi Mario Homework 1.java
ATTENZIONE: il non attenersi in modo corretto alla sopra descritta procedura di consegna comporterà una penalizzazione nella valutazione dell'homework stesso.
La consegna va effettuata entro il lunedì successivo all'assegnazione dell'esercizio.
Gli homework non sono obbligatori. Tuttavia, chi li consegna tutti tranne al più due avrà un bonus aggiuntivo sul voto finale d'esame variabile da 0 a 2 punti, a seconda della qualità e del numero dei lavori consegnati.
Di seguito la lista degli homework con la data di assegnamento. Siete invitati a visualizzare questa pagina ogni martedì.
- 6 Ottobre 2015, id 1
Scrivere un programma in Java che chiede all'utente di immettere un intero n finché l'utente non immette un numero positivo, e quindi crea un array di numeri interi avente lunghezza n. L'array deve essere riempito con i primi n numeri pari, a partire da 0 (0,2,4,6,...)
Infine, il programma deve stampare l'array così ottenuto in ordine inverso (dall'ultima alla prima posizione). - 13 Ottobre 2015, id 2
Scrivere un metodo static void stampaCifre (int n) in Java che, preso come parametro un intero n, stampa le sue cifre una sotto l'altra a partire dalla più significativa (quella più a sinistra) fino alla meno significativa (quella più a destra). - 20 Ottobre 2015, id 3
Scrivere un metodo
static int secondoMinimo (int[] a)
in Java, che preso come parametro un array di numeri interi, restituisce il valore più piccolo tra i valori contenuti dell'array che siano superiori al minimo valore dell'array. Se tale valore non è presente, il metodo deve restituire 0.
Ad esempio, se l'array a è {1,8,4,2,4,8} il metodo deve restituire 2. Se l'array a è {5,5,5} deve restituire 0, in quanto nessun valore è superiore al minimo valore dell'array. - 27 Ottobre 2015, id 4
Scrivere un metodo
static int[] crivelloEratostene (int n)
in Java, che preso un intero n, sfruttando il crivello di Eratostene (https://it.wikipedia.org/wiki/Crivello_di_Eratostene), restituisce un array dell'opportuna lunghezza contenente tutti e soli i numeri primi minori o uguali ad n.
In particolare, il metodo dovrà
- Allocare un array di (circa, a seconda dell'implementazione scelta) n booleani che servirà per segnare i numeri da cancellare (il setaccio)
- effettuare l'operazione di segnatura dei multipli del primo numero del setaccio
- allocare un array dell'opportuna dimensione contenente tutti i numeri primi minori o uguali ad n (a partire da 2). - 3 Novembre 2015, id 5
Scrivere un metodo
static int[] sommaMassima (int[] a)
in Java, che preso come parametro un array di numeri interi, restituisce un sottoarray di a (di elementi consecutivi) avente somma massima in a.
Ad esempio, se a = {-10, 35, -20, 50, -30, -14, 2, 19} il metodo deve restituire il sottoarray {35, -20, 50} che è quello di somma massima. - 10 Novembre 2015, id 6
Scrivere un metodo ricorsivo
static int sommaPari (int n)
in Java, che preso come parametro un intero n, senza far uso di nessun comando iterativo, restituisce la somma di tutti i numeri pari compresi tra 2 ed n. Ad esempio, se n=9, restituisce 20 (poiché 2+4+6+8=20). - 17 Novembre 2015, id 7
Scrivere un metodo ricorsivo
static boolean isConstant (int[] a, int inizio, int fine)
in Java, che preso come parametro un array di numeri interi restituisce true se il suo sottoarray che inizia alla posizione inizio e termina alla posizione fine contiene in tutte le sue posizioni lo stesso valore, false altrimenti.
Il metodo deve sfruttare la tecnica divide et impera e non deve far uso di comandi iteraivi.
Se la porzione di array su cui ci si concentra è vuota o a vale null, il metodo deve restituire true. - 24 Novembre 2015, id 8
Si consideri la struttura dati lista doppiamente concatenata definita dalle seguenti classi:
class Elem{
int valore;
Elem next;
Elem prev;
}
class Lista{
Elem first;
int size;
}
Scrivere un metodo
static void delete (Lista l, Elem e)
in Java, che preso come parametro una lista l ed un suo elem e, assumendo che e appartenga ad l (senza effettuare ulteriori controlli), cancella l'elem e dalla lista doppiamente concatenata. - 1 Dicembre 2015, id 9 (ultimo homework)
Si consideri la struttura dati lista identificata dal suo elemento di testa:
class Elem{
int valore;
Elem next;
}
Scrivere un metodo ricorsivo
static void inserisci (Elem lista, Elem riferimento, Elem nuovo)
in Java, che preso come parametro una lista lista (identificata dal suo elemento iniziale) e due elementi riferimento e nuovo, inserisce l'elemento nuovo dopo l'elemento riferimento (se riferimento appartiene a lista), altrimenti non modifica la lista.