Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ESERCIZI E PROGETTI DI PROGRAMMAZIONE E–33<br />
che controlli se due borsellini contengono le stesse monete nello stesso or<strong>di</strong>ne.<br />
** <strong>Esercizi</strong>o P7.5. Aggiungete alla classe Purse il metodo<br />
public boolean sameCoins(Purse other)<br />
che controlli se due borsellini contengono le stesse monete, eventualmente in or<strong>di</strong>ne <strong>di</strong>verso. Ad<br />
esempio, i borsellini<br />
e<br />
Purse[Quarter,Dime,Nickel,Dime]<br />
Purse[Nickel,Dime,Dime,Quarter]<br />
devono considerarsi uguali. Avrete probabilmente bisogno <strong>di</strong> uno o più meto<strong>di</strong> ausiliari.<br />
** <strong>Esercizi</strong>o P7.6. Un poligono è una curva chiusa formata da segmenti che ne congiungono i<br />
vertici. Realizzate una classe Polygon i cui meto<strong>di</strong><br />
e<br />
public double perimeter()<br />
public double area()<br />
calcolino, rispettivamente, il perimetro e l’area <strong>di</strong> un poligono. Per calcolare il perimetro, valutate<br />
la <strong>di</strong>stanza fra punti a<strong>di</strong>acenti e sommate tali <strong>di</strong>stanze. L’area <strong>di</strong> un poligono con vertici (x0,y0), ...,<br />
(xn–1, yn–1) è<br />
(x0y1 + x1y2 + . . . + xn–1y0 – y0x1 – y1x2 – . . . – yn–1x0) / 2<br />
Per prova, calcolate il perimetro e l’area <strong>di</strong> un rettangolo e <strong>di</strong> un esagono regolare. Nota: non c’è<br />
bisogno <strong>di</strong> visualizzare grafi camente il poligono, lo farete nell’<strong>Esercizi</strong>o 7.18.<br />
* <strong>Esercizi</strong>o P7.7. Scrivete un programma che legga una sequenza <strong>di</strong> numeri interi, memorizzandola<br />
in un array, e ne calcoli la somma a elementi alterni. Per esempio, se il programma viene eseguito<br />
fornendo questi dati<br />
1 4 9 16 9 7 4 9 11<br />
allora calcola<br />
1 – 4 + 9 – 16 + 9 – 7 + 4 – 9 + 11 = –2<br />
** <strong>Esercizi</strong>o P7.8. Scrivete un programma che produca 10 permutazioni casuali dei numeri da 1 a<br />
10. Per generare una permutazione casuale, riempite un array con i numeri da 1 a 10, facendo in<br />
modo che non ve ne siano due uguali. Potreste farlo in modo brutale, invocando Random.nextInt<br />
fi no a quando produce un valore non ancora presente nell’array, ma dovreste, invece, usare un<br />
metodo più intelligente: create un secondo array e inseritevi i numeri da 1 a 10; poi, prendetene<br />
uno a caso, rimuovetelo e accodatelo all’array che contiene la permutazione. Ripetete <strong>di</strong>eci volte.<br />
Realizzate una classe PermutationGenerator che abbia il metodo int[] nextPermutation.<br />
** <strong>Esercizi</strong>o P7.9. Una ripetizione (“run”) è defi nita come una sequenza <strong>di</strong> valori a<strong>di</strong>acenti ripetuti.<br />
Scrivete un programma che generi una sequenza <strong>di</strong> 20 lanci casuali <strong>di</strong> un dado e che visualizzi<br />
i valori ottenuti, identifi cando le ripetizioni racchiudendole tra parentesi tonde, con questo<br />
formato:<br />
1 2 (5 5) 3 1 2 4 3 (2 2 2 2) 3 6 (5 5) 6 3 1<br />
Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl