Homework A.A. 2013/2014
A partire dall' 8 Ottobre, e fino alla fine delle lezioni, ogni martedì verranno assegnati degli homework, da svolgere singolarmente e consegnare via posta elettronica all'indirizzo luca.moscardelli@gmail.com mettendo nell'oggetto del messaggio la seguente stringa:
[jmm] Cognome Nome Homework n° 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 n° id
La consegna va effettuata entro il lunedì successivo all'assegnazione dell'esercizio.
Il file va consegnato in formato di testo semplice; .txt e .java sono estensioni accettabili.
Gli homework non sono obbligatori. Tuttavia, chi consegna almeno i 4/5 degli homework assegnati avrà un bonus aggiuntivo sul voto finale d'esame variabile da 0 a 2 punti, a seconda della qualità dei lavori consegnati.
Di seguito la lista degli homework con la data di assegnamento. Siete invitati a visualizzare questa pagina ogni martedì.
- 8 Ottobre 2013, 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 di Fibonacci, dove i numeri di Fibonacci sono definiti nel seguente modo: i primi due numeri di Fibonacci sono 1, ed ogni numero successivo è ottenuto sommando i due numeri precedenti. Ad esempio, se n=6, i numeri di Fibonacci sono 1, 1, 2, 3, 5, 8 e l'array creato deve essere {1,1,2,3,5,8}.
Infine, il programma deve stampare l'array così ottenuto in ordine inverso (dall'ultima alla prima posizione). - 15 Ottobre 2013, id 2
Scrivere un metodo selectionSort in Java-- che prende come parametro in ingresso un array di numeri interi e lo ordina utilizzando l'ordinamento per selezione visto a lezione. Il metodo non deve restituire nulla (deve essere void). - 22 Ottobre 2013, id 3
Scrivere un metodo ruotaArray in Java-- che prende come parametro in ingresso un array di numeri interi a ed un intero n e restituisce un nuovo array della stessa lunghezza di a in cui gli elementi sono scalati in base al parametro n (si consideri l'array in modo circolare). Valori positivi di n corrispondono ad una scalatura verso sinistra. Valori negativi ad una scalatura verso destra.
Si consideri ad esempio l'array {1, 3, 5, 7}: se n=2, il nuovo array sarà {5, 7, 1, 3}; se n=-1, il nuovo array sarà {7, 1, 3, 5}; se n= 8, il nuovo array sarà {1,3,5,7}. - 5 Novembre 2013, id 4
Scrivere un metodo
public static int secondoMassimo (int[] a)
in Java che, preso in input un array di numeri interi, restituisce il valore più grande tra i valori contenuti dell'array che siano inferiori al massimo 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 4. Se l'array a è {5,5,5} deve restituire 0, in quanto nessun valore è inferiore al massimo valore dell'array. - 12 Novembre 2013, id 5
Sfruttando opportunamente il codice visto oggi a laboratorio (scaricabile qui) per il cambio di base dei numeri, aggiungere alla MainClass scritta a laboratorio un metodo
public static int[] somma (int[] numeroA, int baseA, int[] numeroB, int baseB, int baseRisultato)
che presi in input due addendi (numeroA espresso in base baseA e numeroB espresso in base baseB) restituisce la rappresentazione in base baseRisultato della loro somma. Si ricorda che un array rappresenta un numero nel seguente modo: la posizione 0 è la cifra meno significativa (la più a destra), la posizione 1 è la seconda cifra partendo da destra, e così via fino all'ultima posizione che rappresenta la cifra più significativa (la più a sinistra). - 19 Novembre 2013, id 6
Sfruttando opportunamente il codice visto a laboratorio per le frazioni (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodoiterativo
public static Frazione potenzaFrazione (Frazione f, int n)
che presi in input una Frazione f ed un intero n restituisce la frazione risultato dell'elevamento a potenza della frazione f all'esponente n (l'esponente può essere anche negativo).
Scrivere inoltre un analogo metodo ricorsivo
public static Frazione potenzaFrazioneRic (Frazione f, int n) - 26 Novembre 2013, id 7
Sfruttando opportunamente il codice visto a laboratorio per le frazioni e le espressioni (scaricabile qui), aggiungere alla MainClass scritta a laboratorio un metodo
public static boolean equivalenteExp (Exp e1, Exp e2)
che prese in input due espressioni restituisce true se e solo se esse sono equivalenti, cioè se e solo se la loro valutazione porta a due frazioni equivalenti. - 3 Dicembre 2013, id 8
Si scriva un metodo
public static int[][] tartaglia (int n)
che preso in input un inter n crea e restituisce un array bidimensionale corrispondente all triangolo di tartaglia con n+1 righe, in cui la riga di indice i (i che va da 0 a n) contiene i+1 colonne.
In particolare, la prima riga contiene solo l'intero 1, la seconda riga gli interi 1 e 1, la terza gli interi 1,2 e 1 e così via:
1
1 1
1 2 1
1 3 3 1
...
Si noti che l'elemento di riga i e colonna j (j va da 0 a i) corrrisponde al coefficiente binomiale (i su j).
L'array bidimensionale costruito deve avere le righe della lunghezza necessaria e sufficiente a contenere gli elementi del triangolo di Tartaglia (non deve essere un array bidimensionale rettangolare).
Si noti che (i su j) vale 1 quando j=0 o j=i, e per calcolare il coefficiente binomiale i su j (con 1 <= j <= i-1) si può sfruttate la relazione (i su j) = (i-1 su j) + (i-1 su j-1) - 10 Dicembre 2013, id 9 (ultimo homework)
Si scriva un metodo
public static boolean controllo (Elem lista)
che presa in input una lista (identificata dal suo elemento di testa) restituisce true se la lista ha la proprietà che ogni suo elemento (esclusi i primi 2) è uguale alla somma dei due precedenti, false altrimenti.
Se la lista è vuota o contiene meno di tre elementi, il metodo deve restituire true.
Ad esempio, la lista 3 -> 5 -> 8 -> 13 -> 21 soddisfa tale proprietà.