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.
Scarica

presentazione in power point