Risoluzione problema #10 Di Marco Biasin e Giulio Fellin. Classe IV F - Biasin M. e Fellin G. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Classe IV F - Biasin M. e Fellin G. Inizio programma //leggo la dimensione della matrice do{ System.out.print("Inserisci il numero di righe della matrice: "); n=Integer.parseInt(tastiera.readLine()); }while(n<=0); do{ System.out.print("Inserisci il numero di colonne della matrice: "); m=Integer.parseInt(tastiera.readLine()); }while(n<=0); Classe IV F - Biasin M. e Fellin G. Inizio programma //dichiarazione della matrice int mat [][]=new int[n][m]; int vett[]=new int[n*m]; //caricamento della matrice for(i=0;i<n;i++){ for(j=0;j<m;j++){ System.out.print("Inserisci il "+(j+1)+"° numero della "+(i+1)+"^ riga: "); mat[i][j]=Integer.parseInt(tastiera.readLine()); }} Classe IV F - Biasin M. e Fellin G. 0 1 2 3 0 1 2 3 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 y Classe IV F - Biasin M. e Fellin G. x 0 1 2 3 0 1 2 3 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 y Classe IV F - Biasin M. e Fellin G. x y+x-q=0 0 1 2 3 1 2 3 4 1 5 6 7 8 2 9 101112 3 13141516 y 0 x d=n√2 a=√2/2 k=(d/a)-1 k=2*n-1 Classe IV F - Biasin M. e Fellin G. Matrice rettangolare 0 1 2 3 4 x diff = m-n 1 2 3 4 5 1 6 7 8 9 10 k=2*m-1-diff 2 11121314 15 k=n+m-1 / / / / / y / / / / / 0 Classe IV F - Biasin M. e Fellin G. Ordinamento vettore //assegnazione valore max q k=n+m-1; //creazione vettore ordinato for(int q=0;q<k;q++){ for(int y=0;y<n;y++){ for(int x=0;x<m;x++){ if((y+x-q)==0){ vett[w]=mat[y][x]; w++; }}}} Classe IV F - Biasin M. e Fellin G. 1 2 3 4 5 6 7 8 q=0 9 10 11 12 13 14 15 16 1 Classe IV F - Biasin M. e Fellin G. y+x-q=0 1 2 3 4 5 6 7 8 q=1 9 10 11 12 13 14 15 16 125 Classe IV F - Biasin M. e Fellin G. y+x-q=0 1 2 3 4 5 6 7 8 q=2 9 10 11 12 13 14 15 16 1253 Classe IV F - Biasin M. e Fellin G. y+x-q=0 1 2 3 4 1 2 3 4 5 6 7 8 9 101112 5 6 7 8 13141516 9 10 11 12 13 14 15 16 1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16 1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16 Classe IV F - Biasin M. e Fellin G. 0 1 2 3 y x 0 1 2 3 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 q pari q dispari Classe IV F - Biasin M. e Fellin G. Caso q pari/dispari //q dispari //q pari for(int y=0;y<n;y++){ for(int x=0;x<m;x++){ if((y+x-q)==0){ for(int y=n-1;y>=0;y--){ for(int x=m-1;x>=0;x--){ if((y+x-q)==0){ vett[w]=mat[y][x]; w++; }}} vett[w]=mat[y][x]; w++; }}} Classe IV F - Biasin M. e Fellin G. Programma corretto for(int q=0;q<k;q++){ if(q%2==0){ for(int y=n-1;y>=0;y--){ for(int x=m-1;x>=0;x--){ if((y+x-q)==0){ vett[w]=mat[y][x]; w++; }}}}else{ for(int y=0;y<n;y++){ for(int x=0;x<m;x++){ if((y+x-q)==0){ vett[w]=mat[y][x]; w++; }}}}} Classe IV F - Biasin M. e Fellin G. 1 5 2 6 3 7 4 8 9 10 11 12 q=0 pari 13 14 15 16 y+x-q=0 1 Classe IV F - Biasin M. e Fellin G. 1 5 2 6 3 7 4 8 9 10 11 12 q=1 dispari 13 14 15 16 y+x-q=0 125 Classe IV F - Biasin M. e Fellin G. 1 5 2 6 3 7 4 8 9 10 11 12 q=2 pari 13 14 15 16 y+x-q=0 1 2 59 6 3 Classe IV F - Biasin M. e Fellin G. 1 5 2 6 3 7 4 8 9 10 11 12 q=3 dispari 13 14 15 16 y+x-q=0 1 2 5 9 6 3 4 7 10 13 ... Classe IV F - Biasin M. e Fellin G. Output for(i=0;i<n*m;i++){ if(i==n*m-1) System.out.print(vett[i]+"."); else System.out.print(vett[i]+", "); } Classe IV F - Biasin M. e Fellin G. Uso pratico Bianco = 0 Nero = 1 Classe IV F - Biasin M. e Fellin G. Il programma “Qwerty 2.0 ®”, il nome, il logo, i contenuti presenti sulla presentazione (i testi, la grafica, i codici, ecc.) nonché le modalità di presentazione e formazione del contenuto stesso, salvo indicazione contraria, sono di proprietà dei titolari del programma e sono protetti dalle leggi italiane ed internazionali. È consentita l'archiviazione elettronica e la stampa dei contenuti di Qwerty 2.0 solo a scopo umanitario. È vietato qualsiasi altro utilizzo (commerciale, didattico, ecc.) dei contenuti del suddetto sito da parte di terzi, senza il preventivo consenso scritto del titolare_ Classe IV F - Biasin M. e Fellin G.