Attachment '20120110-LAB-Classi-Dadi-e-Matrici.txt'
Download 1 Esercizio 1
2 ===========
3 Un gruppo di appassionati di giochi di ruolo dispone di un numero considerevole
4 di dadi (che possiamo considerare illimitato). I dadi sono di vario tipo: da 4
5 facce, da 5 facce, da 6 facce e, in generale, da k facce, dove k è un qualsiasi
6 intero nell'intervallo [4, 20]. I dadi sono tutti regolari, ovvero ogni faccia
7 di un dado da k facce esce con frequenza 1/k. Il gruppo inventa un gioco. Dato
8 un insieme di n dadi (n>0) da k facce, lanciarli ripetutamente finché almeno
9 metà delle possibili facce sono visibili sul tavolo. Si noti che tutti i dadi
10 devono essere lanciati assieme, ogni volta, quindi non è possibile mantenerne
11 alcuni sul tavolo. Vince il giocatore che raggiunge la sopracitata condizione
12 nel minor numero di lanci.
13
14 ESEMPIO: per n=4 e k=5, se i dadi assumono le facce 2, 2, 4, 4 il giocatore deve
15 riprovare. Se invece le facce assunte dai dadi sono 2, 4, 3, 4 il giocatore può
16 fermarsi.
17
18 Modellare la classe InsiemeDadi per consentire al gruppo di cimentarsi nel
19 gioco, avendo cura di implementare almeno i seguenti metodi.
20
21 - private InsiemeDadi(int n, int k): un costruttore privato con due parametri
22 (dal significato intuitivo);
23
24 - public static InsiemeDadi leggi(Scanner input): un metodo statico che legge da
25 standard input i parametri n e k e costruisce un'istanza di InsiemeDadi;
26
27 - public int gioca(): un metodo che esegue il lancio dei dadi finché la
28 condizione target non è raggiunta; il metodo deve restituire il numero di lanci
29 eseguiti.
30
31 Modellare e implementare ogni altra classe o metodo che si ritiene utile ai fini
32 dell'esercizio. SUGGERIMENTO: si pensi, ad esempio, ad una classe Dado...
33
34
35 Esercizio 2
36 ===========
37 Si progetti e si implementi in Java un metodo booleano che restituisca true
38 se è verificato quanto descritto di seguito, e restituisca false altrimenti.
39 Il metodo riceve come parametro una matrice di numeri interi di dimensione n*m;
40 si attende in essa una striscia di demarcazione che la separa in due parti.
41 Questa striscia risulta costituita da elementi vicini pari a 0; essa
42 consente di individuare una regione sinistra ed una regione destra, nella
43 matrice stessa. Si noti che per elementi vicini si intendono due elementi
44 presenti in due righe consecutive e su colonne che differiscono al più di uno
45 (quindi sulla stessa colonna oppure su due colonne adiacenti). Si definiscono le
46 due grandezze SOMMA e PRODOTTO come segue: SOMMA è pari alla somma di tutti gli
47 elementi presenti nella regione sinistra della matrice, mentre PRODOTTO è pari
48 al prodotto di tutti gli elementi presenti nella regione destra. Il metodo
49 richiesto dallesercizio deve restituire true se e solo se SOMMA = PRODOTTO.
50 NOTA: sia la regione sinistra che quella destra contengono ALMENO un elemento
51 per ciascuna riga (questo vuol dire che gli zeri non possono mai trovarsi sulla
52 prima colonna, né sullultima). ESEMPIO: nella matrice riportata qui sotto, la
53 somma degli elementi nella regione sinistra è pari a 72, così come il prodotto
54 degli elementi nella regione destra. Il metodo dovrebbe pertanto restituire
55 true.
56
57 - - - - - -
58 |9|7|1|8|0|1|
59 - - - - - -
60 |3|9|5|0|3|1|
61 - - - - - -
62 |6|6|0|2|1|2|
63 - - - - - -
64 |7|9|2|0|3|2|
65 - - - - - -
Attached Files
You are not allowed to attach a file to this page.