salve ragazzi vorrei scansionare una matrcie nxn per diagonali
come fare???
grazie anticipatamente per l'aiuto
ps: martedì ho esame prestooooooo
salve ragazzi vorrei scansionare una matrcie nxn per diagonali
come fare???
grazie anticipatamente per l'aiuto
ps: martedì ho esame prestooooooo
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
Innanzitutto dovresti specificare e precisare cosa intendi! Poter "enumerare" i valori nelle diagonali? Quali diagonali? Tutte? In quale senso?Originariamente inviato da mattodijava
salve ragazzi vorrei scansionare una matrcie nxn per diagonali
come fare???
Ma poi, comunque, quale è la difficoltà?? Nel senso che ... basta solo ragionare.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
dall'alto a sinistra verso il basso a destra....come si fa ??????
ciò ragionato ma nn so come fare anche perchè è una matrice qudrata di stringhe e devo fare la concatenazione...
ecco il verso della scansione;
/
/
/
/
su per giù è questo il verso della scansione della matrice
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
Quindi hai un String[][]. La dimensione della matrice la puoi facilmente determinare. Il numero di righe dalla lunghezza dell'array principale e il numero di colonne (supponengo e/o garantendo che sia davvero "rettangolare") dalla lunghezza della prima riga ovvero il primo sotto array.Originariamente inviato da mattodijava
dall'alto a sinistra verso il basso a destra....come si fa ??????
ciò ragionato ma nn so come fare anche perchè è una matrice qudrata di stringhe e devo fare la concatenazione...
Fatto questo .... beh, basta solo ragionare sulla locazione delle celle! Prendiamo una matrice 3x4 in cui ho messo delle lettere giusto solo per esempio:
Descrivi la sequenza che vuoi ottenere!codice:A B C D E F G H I L M N
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
quello che voglio ottenere è
a
eb
ifc
lgd
mh
n
e devo fare la concatenazione di questi char e ritornare la stringa(questo lo so fare)
cmq la matrice deve essere quadrata
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
Ok ... io facevo solo un esempio generale.Originariamente inviato da mattodijava
quello che voglio ottenere è
a
eb
ifc
lgd
mh
n
e devo fare la concatenazione di questi char e ritornare la stringa(questo lo so fare)
cmq la matrice deve essere quadrata
Mettiamola quadrata:
A B C
D E F
G H I
Tu vuoi ottenere A D B G E C H F I. In pratica in diagonale verso alto/destra.
Le diagonali partono dal lato A D G e poi dall'altro lato H I.
Prendiamo l'inizio con A D G. Cosa ti viene in mente? Di fare un ciclo for per scansionare le righe. Per ogni riga parti dalla prima colonna e con un altro ciclo interno, ad ogni iterazione aumenti la colonna e diminuisci la riga .... finché possibile ovviamente (c'è da fare un test).
Cosa molto simile per l'altro lato.
Anzi ... si potrebbe trattare i due lati allo stesso modo. La riga fisica può andare da 0 a 2 (nel caso sopra) ma tu potresti farla andare fino a 4. Ovviamente non ci accedi subito ... se vedi che la riga supera il massimo, la differenza la sommi sulla colonna.
Se arrivi alla riga 3 (che non esiste), in realtà devi partire dalla riga 2 e dalla colonna 1 (la seconda) cioè 3-2=1.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok perfetto ma in pratica?
io già ero arrivato a questa soluzione
for (int i=0; i<M.length; i++){
for (int j=0; j<=i; j++){
System.out.print(M[i-j][j]+" ");
questo mi stampa fino alla più grande diagonale(quella centrale)
poi dovrei fare altri due for per scansionare la matrice nell'altra parte
ma come??
non ci sto riuscendo
tu come pensi si possa fare?
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
E come vedi funziona per qualunque tipo di matrice .... quadrata o rettangolare che sia!codice:public class Prova { public static void main(String[] args) { String[][] mat1 = { { "A", "B", "C" }, { "D", "E", "F" }, { "G", "H", "I" }, }; String[][] mat2 = { { "A", "B", "C", "D", "E" }, { "F", "G", "H", "I", "L" }, { "M", "N", "O", "P", "Q" }, }; stampaPerDiagonali(mat1); stampaPerDiagonali(mat2); } public static void stampaPerDiagonali(String[][] mat) { int numRighe = mat.length; int numColonne = mat[0].length; int righeTeoriche = numRighe + numColonne - 1; for (int rt = 0; rt < righeTeoriche; rt++) { int r, c; if (rt < numRighe) { r = rt; c = 0; } else { r = numRighe - 1; c = rt - numRighe + 1; } while (r >= 0 && c < numColonne) { System.out.print(mat[r][c] + " "); r--; c++; } } System.out.println(); } }
P.S. E ho impiegato una manciata di minuti a scriverlo e provarlo ...
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
grazieeeeeeeeeeeeeeeeeeeeeeeeeeee
milleeeeeeeeeeeeeeeeeeeeeeeeeeeee
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
E certo .... te l'ho scritto io. Ora che hai visto il codice dimmi: era così difficile??Originariamente inviato da mattodijava
grazieeeeeeeeeeeeeeeeeeeeeeeeeeee
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet