Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[JAVA] Stampa di una matrice con numeri a "spirale"

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utentealex0211 » 12 nov 2011, 16:56

Salve a tutti, sto combattendo con questo esercizio da giorni ormai senza avere una benchè minima illuminazione e senza nemmeno capire la soluzione proposta!!
Allego il testo :

Scrivere un metodo che, dato un numero positivo N, crea e restituisce una matrice quadrata NxN di interi che memorizza i numeri da 1 a N2disposti “a spirale”

http://www.uniroma2.it/didattica/POJ/de ... rcizio.pdf

e qui c'è anche la soluzione, ma che onestamente non riesco a comprendere!
http://www.uniroma2.it/didattica/POJ/de ... rale2.java

Qualcuno riesce a decifrarmi come si svolge una cosa del genere?

Grazie a Tutti!

Alex
Avatar utente
Foto Utentealex0211
30 3
 
Messaggi: 30
Iscritto il: 1 lug 2011, 20:44

0
voti

[2] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utenteangus » 12 nov 2011, 19:03

Il PDF con la spiegazione punto per punto (e anche i disegnini) mi sembra molto chiaro.
Cosa non ti convince? Il metodo o il codice?
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[3] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utentealex0211 » 12 nov 2011, 19:06

Si perdonami, forse sono stato poco chiaro.

Ho capito bene o male la logica dietro all'algoritmo (il cambio di direzione cioe), quello che non ho capito è il codice che è stato usato e la logica dietro la quale sono state create quelle operazioni..

ho provato a rileggere piu e piu volte il codice, senza capire perche però sono state fatte QUELLE operazioni per otterene quel risultato..
Spero di essermi spiegato un po' meglio :)

Alex
Avatar utente
Foto Utentealex0211
30 3
 
Messaggi: 30
Iscritto il: 1 lug 2011, 20:44

0
voti

[4] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utenteangus » 12 nov 2011, 19:36

Scusami ma continuo a non capire.
Il codice, che è anche ben commentato, rispecchia l'algoritmo... se hai capito quello, non dovresti avere problemi.

Puoi postare il ragionamento che fai per analizzare il codice, punto per punto, ed indicare dove trovi delle difficoltà o delle discrepanze rispetto all'algoritmo?
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[5] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utentealex0211 » 12 nov 2011, 20:15

Ok allora, partendo dal metodo

Codice: Seleziona tutto
public static int aggiornaDirezione(int direzione, int i, int j, int n)


Che indici sono i,j e n?

Codice: Seleziona tutto
/* se ci si trova sulla diagonale
      la direzione viene aggiornata e 1 e 3 */
      if (i+j == n-1)

if (i+j == n-1) rappresenta la diagonale? perche?

in generale, nonostante siano commentate a dovere, non riesco a ben capire la logica dietro le operazioni presenti negli if-else e come essi possano rappresentare le "diagonali" o i cambi di direzione.

gli altri due metodi, aggiorna riga e aggiorna colonna sono abbastnza intuitivi.

anche l'ultimo ora che lo riguardo sembra essere abbastanza intuitivo, si tratta solo di incastrare i vari risultati ottenuti prima...magari dopo lo riguardo e provo a ricrearlo e vedo se ci sono delle discrepanze!
non c'è un metodo meno macchinoso ad ogni modo?
Avatar utente
Foto Utentealex0211
30 3
 
Messaggi: 30
Iscritto il: 1 lug 2011, 20:44

1
voti

[6] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utenteangus » 12 nov 2011, 21:39

alex0211 ha scritto:Che indici sono i,j e n?

riga, colonna, numero di righe (o colonne)
alex0211 ha scritto:if (i+j == n-1) rappresenta la diagonale? perche?

pagina 5 del pdf che spiega l'algoritmo. Non ti è molto chiaro quello allora...

esempio. Se sei nella prima riga i=0 e sei nell'ultima colonna j=3, incroci la diagonale secondaria... infatti 0+3==4-1
esempio2. Se sei nella seconda riga i=1 la stessa diagonale la incroci nella penultima colonna j=2.. 1+2=4-1
alex0211 ha scritto:non c'è un metodo meno macchinoso ad ogni modo?

Trovare un altro algoritmo è un problema diverso dal capire come tradurre in codice un certo algoritmo. No?
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[7] Re: [JAVA] Stampa di una matrice con numeri a "spirale"

Messaggioda Foto Utentealex0211 » 13 nov 2011, 15:11

Ah ecco...molto piu chiaro cosi! Quello che mi chiedo: c'e un metodo pratico per arrivare a una relazione di questo tipo o è per cosi dire, immaginazione?

Per gli altri due if-else il prOcedimento analogo?

Grazie in ogni caso!
Avatar utente
Foto Utentealex0211
30 3
 
Messaggi: 30
Iscritto il: 1 lug 2011, 20:44


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti