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–35<br />
** <strong>Esercizi</strong>o P7.13. Aggiungete alla classe TicTacToe del Paragrafo 7.8 il metodo getWinner, che<br />
restituisca “x” oppure “o” per in<strong>di</strong>care un vincitore, oppure “ “ se non c’è ancora un vincitore.<br />
Ricordate che una confi gurazione vincente consiste <strong>di</strong> tre segni identici su una riga, su una colonna<br />
o su una <strong>di</strong>agonale.<br />
*** <strong>Esercizi</strong>o P7.14. Scrivete un’applicazione per giocare a tic-tac-toe. Il vostro programma deve<br />
visualizzare la scacchiera, passare all’altro giocatore dopo ogni mossa e <strong>di</strong>chiarare il vincitore.<br />
** <strong>Esercizi</strong>o P7.15. Quadrati magici. Una matrice n × n riempita con i numeri 1, 2, 3, ..., n² è un<br />
quadrato magico se la somma degli elementi <strong>di</strong> ogni riga, <strong>di</strong> ogni colonna e delle due <strong>di</strong>agonali<br />
ha lo stesso valore. Per esempio, questo è un quadrato magico:<br />
Scrivete un programma che legga n² valori dalla tastiera e verifi chi se, <strong>di</strong>sposti in una matrice,<br />
formano un quadrato magico.<br />
Dovete verifi care tre caratteristiche:<br />
• L’utente ha inserito un numero n² <strong>di</strong> valori, per qualche valore <strong>di</strong> n?<br />
• Ciascuno dei numeri 1, 2, ..., n² è veramente presente una e una sola volta nei dati inseriti<br />
dall’utente?<br />
• Quando i numeri vengono <strong>di</strong>sposti in un quadrato, la somma degli elementi <strong>di</strong> ogni riga, <strong>di</strong><br />
ogni colonna e delle due <strong>di</strong>agonali ha lo stesso valore?<br />
Se il numero <strong>di</strong> valori in ingresso è il quadrato <strong>di</strong> un numero intero n, verifi cate che tutti i numeri<br />
compresi fra 1 e n² siano presenti. Poi, calcolate la somma degli elementi <strong>di</strong> ogni riga, <strong>di</strong> ogni<br />
colonna e delle due <strong>di</strong>agonali. Realizzate una classe Square con i meto<strong>di</strong> seguenti:<br />
public void add(int i)<br />
public boolean isMagic()<br />
** <strong>Esercizi</strong>o P7.16. Implementate il seguente algoritmo per costruire quadrati magici n per n, che<br />
funziona solo se n è <strong>di</strong>spari. Posizionate il numero 1 al centro dell’ultima riga. Dopo aver messo<br />
il numero k nella posizione (i, j), mettete il numero k + 1 nel riquadro in basso a destra rispetto<br />
alla posizione <strong>di</strong> k, andando a capo sui bor<strong>di</strong>. Se, però, il riquadro in basso a destra è già occupato,<br />
dovete passare al riquadro che si trova imme<strong>di</strong>atamente sopra al numero che avete appena inserito.<br />
Ecco il quadrato 5 × 5 che si ottiene seguendo questo metodo:<br />
Scrivete un programma il cui dato in ingresso sia il numero n e il cui prodotto in uscita sia il<br />
quadrato magico <strong>di</strong> or<strong>di</strong>ne n, se n è <strong>di</strong>spari. Realizzate una classe MagicSquare con un costruttore<br />
che costruisca il quadrato e con il metodo toString che restituisca una rappresentazione del<br />
quadrato.<br />
Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl