31.05.2013 Views

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!