/*
Ottenere dall'utente tre numeri: h, k, e N.
Su una scacchiera N x N le caselle sono:
di tipo * se la somma dell'indice di riga e dell'indice di colonna è un multiplo di h ma non di k;
di tipo 0 se la somma dell'indice di riga e dell'indice di colonna è un multiplo di k ma non di h;
di tipo $ se la somma dell'indice di riga e dell'indice di colonna è un multiplo sia di h che di k;
di tipo + se la somma dell'indice di riga e dell'indice di colonna non è multiplo nè di h nè di k.
Rappresentare la scacchiera contrassegnando ogni casella con il suo tipo.
Dare le statistiche (in percentuale) di quante caselle per ogni tipo ci sono.
*/
import javax.swing.JOptionPane;
class ExArray_07 {
public static void main(String[] args) {
int N = Integer.parseInt(JOptionPane.showInputDialog("Matrice quadrata di lato?"));
int h = Integer.parseInt(JOptionPane.showInputDialog("Primo numero (h):"));
int k = Integer.parseInt(JOptionPane.showInputDialog("Secondo numero (k):"));
char[][] Array = new char[N][N];
int sum; //somma degli indici
char field = ' '; //campo da inserire negli elementi dell'Array
int s1=0, s2=0, s3=0, s4=0; //contatori di simboli
for (int j=0; j<Array.length; j++)
for (int c=0; c<Array[0].length; c++) {
sum = j + c;
if ((sum % h) == 0 && (sum % k) != 0) {field = '*'; s1++;}
else if ((sum % k) == 0 && (sum % h) != 0) {field = '0'; s2++;}
else if ((sum % h) == 0 && (sum % k) == 0) {field = '$'; s3++;}
else if ((sum % h) != 0 && (sum % k) != 0) {field = '+'; s4++;}
//riempie l'elemento
Array[j][c] = field;
}
//stampa della matrice
System.out.println("\nStampa matrice");
for (int j=0; j<Array.length; j++) {
for (int c=0; c<Array[0].length; c++)
System.out.print("\t" + Array[j][c]);
System.out.println();
}
//stampa statistiche
System.out.println("\nStatistiche dei segni inseriti:\n\n" +
"\t'*' = " + (float) s1/(N*N) * 100 + "%\n" +
"\t'0' = " + (float) s2/(N*N) * 100 + "%\n" +
"\t'$' = " + (float) s3/(N*N) * 100 + "%\n" +
"\t'+' = " + (float) s4/(N*N) * 100 + "%");
System.exit(0);
}
}