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–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

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

Saved successfully!

Ooh no, something went wrong!