/*
Si ottenga un numero N dall'utente e si riempia un array quadrato N x N
con i numeri consecutivi da 0 a N^2-1 come segue:
a) riga per riga da sinistra verso destra in maniera crescente.
Esempio: se N=3
0 1 2
3 4 5
6 7 8
b) lo stesso di a) ma in maniera decrescente
c) colonna per colonna dall'alto verso il basso.
Esempio: se N=3
0 3 6
1 4 7
2 5 8
d) lo stesso di c ma in maniera decrescente
e) a serpentina da 0 dfino a N^2-1
Esempio se N=3
0 1 2
5 4 3
6 7 8
*/
import javax.swing.JOptionPane;
class ExArray_02 {
public static void main(String[] args) {
int N;
do
N = Integer.parseInt(JOptionPane.showInputDialog("Matrice quadrata di lato?"));
while (N<2 || N>20);
int[][] Array1 = new int[N][N];
//chiedi tipo di riempimento
String msg = "Scegli opzioni:\n 1) da sx verso dx \n 2) come 1 ma decrescente \n 3) colonna per colonna \n ";
msg += "4) come 3 ma decrescente \n 5) serpentina \n 6) Esci dal programma";
int scelta;
for (;;) { //ciclo infinito da cui si esce solo tramite menù
do
scelta = Integer.parseInt(JOptionPane.showInputDialog(msg));
while (scelta<1 || scelta>6);
int cnt=0; //contatore
int j, k; //cicli
switch (scelta) {
case 1:
for (j=0; j<Array1.length; j++)
for (k=0; k<Array1[0].length; k++)
Array1[j][k] = cnt++;
break;
case 2:
cnt = (N*N)-1;
for (j=0; j<Array1.length; j++)
for (k=0; k<Array1[0].length; k++)
Array1[j][k] = cnt--;
break;
case 3:
for (j=0; j<Array1.length; j++)
for (k=0; k<Array1[0].length; k++)
Array1[k][j] = cnt++;
break;
case 4:
cnt = (N*N)-1;
for (j=0; j<Array1.length; j++)
for (k=0; k<Array1[0].length; k++)
Array1[k][j] = cnt--;
break;
case 5:
int istart, iend;
for (j=0; j<Array1.length; j++)
if (j % 2 == 0)
for (k=0; k<Array1[0].length; k++)
Array1[j][k] = cnt++;
else
for (k=Array1[0].length-1; k>=0; k--)
Array1[j][k] = cnt++;
break;
default:
System.exit(0);
}
//stampa della matrice
System.out.println("\nRiempimento con scelta " + scelta);
for (j=0; j<Array1.length; j++) {
for (k=0; k<Array1[0].length; k++)
System.out.print("\t" + Array1[j][k]);
System.out.println();
}
}
}
}