Pages: [1]   Go Down
Print
Author Topic: Diagonali matrice rettangolare  (Read 5008 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Gerry
Matricola
*
Offline Offline

Posts: 73


« on: 14-03-2011, 21:03:27 »

 ciao Qualcuno potrebbe darmi qualche consiglio su come scorrere le diagonali di una matrice rettangolare (per esempio con 7 colonne e 6 righe)? Grazie in anticipo 
Logged
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #1 on: 16-03-2011, 17:26:06 »

pensa alla geometria... hai presente la formula  x-y=k?

ragiona in questo yoh
Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #2 on: 16-03-2011, 17:28:15 »

guarda ogni diagonale considerando le coordinate della matrice ..
0.0 ... 0.1 ...
1.0 ... 1.1 ... ecc ecc

Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #3 on: 16-03-2011, 17:28:34 »

 
Logged

Aliens Exist
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #4 on: 16-03-2011, 17:41:24 »

e se dovessi scorrere sia la diagonale destra che quella sinistra di ogni punto della matrice? devo implementare questo  metodo su forza 4 tanto per darvi l'idea..grazie.. pray
Logged
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #5 on: 16-03-2011, 17:59:54 »

e se dovessi scorrere sia la diagonale destra che quella sinistra di ogni punto della matrice? devo implementare questo  metodo su forza 4 tanto per darvi l'idea..grazie.. pray

io una cosa simile l'avevo fatta per un esercizio... ho controllato tutte le diagonali , principali , secondarie, parallele alla principale e alla secondaria, devi considerare ogni volta il numero variante di colonne, è questo il difficile, devi mettere un contatore che "ricorda" al ciclo dov'è , e agisce di conseguenza, ovvero se sei in riga 2 devi contare 4 colonne, ecc ecc
Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #6 on: 16-03-2011, 18:13:17 »

mi viene un po difficile da spiegarlo cosi xD
Logged

Aliens Exist
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #7 on: 16-03-2011, 22:51:58 »

eccolo l'ho ritrovato nell'altro post.
è quello che si chiede qui, in più chi l'aveva postato aveva messo come richiesta di ritornare vero se la somma id una diagonale fosse divisibile per 5.
Code:
boolean metodo (int [][] A)
{
int i=A.length-1, cont=0, diagonali=A.length+A[0].length-1;
while(cont<diagonali)
{
int sum=0;
int x = (i>0) ? i-- : 0;
int j = (x>0) ? 0 : (diagonali-cont-1);
while(x<A.length && j<A[0].length)
{
sum+=A[x][j];
x++;
j++;
}
if(sum%5==0)
return true;
else
cont++;
}
return false;
}

è un pò contorto, nn l'ho toccato da quando l'ho usato, ricordo che funzionava. in caso si migliora dal punto di vista della leggibilità  ecc... ma è il ragionamento che ti spiegavo oggi, assegnare i punti da cui partire in base alla diagonale che devi calcolare
Logged

"Che la Forza sia con Te"
Gerry
Matricola
*
Offline Offline

Posts: 73


« Reply #8 on: 17-03-2011, 14:20:24 »

Grazie ragazzi...in ogni caso ho chiesto al prof ieri e , anche se non è stato molto chiaro, mi ha dato due soluzioni:una non funziona,l'altra è questa..

for(int i=A.length;i>=-A[0].length;i--)
      {
         for(int j=0;j<A.length;j++)
         {
            for(int k=0;k<A[0].length;k++)
            {
               if(j-k==i)
               {
                  System.out.print(A[j][k]);
               }
            }
         }
         System.out.println();
      }

 
Logged
RobyP
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 111



« Reply #9 on: 17-03-2011, 14:56:29 »

Si questo funziona, dà in output tutte le diagonali volta x volta xD  yoh (da sx a dx) lol
« Last Edit: 17-03-2011, 15:01:30 by RobyP » Logged
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #10 on: 17-03-2011, 17:16:57 »

Grazie ragazzi...in ogni caso ho chiesto al prof ieri e , anche se non è stato molto chiaro, mi ha dato due soluzioni:una non funziona,l'altra è questa..

for(int i=A.length;i>=-A[0].length;i--)
      {
         for(int j=0;j<A.length;j++)
         {
            for(int k=0;k<A[0].length;k++)
            {
               if(j-k==i)
               {
                  System.out.print(A[j][k]);
               }
            }
         }
         System.out.println();
      }

 

ha spaccato
Logged

Aliens Exist
Pages: [1]   Go Up
Print
Jump to: