welcome: please sign in
location: attachment:20120110-LAB-Classi-Dadi-e-Matrici.txt of InformaticaCDLmatematica

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 dall’esercizio 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é sull’ultima). 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.