/*
Dato un array di N numeri interi tra 0 e 100 scelti a caso
trovare quale è il numero più frequente e il meno frequente.
*/
import javax.swing.JOptionPane;
class ExArray_03 {
public static void main(String[] args) {
final int NUMCAS = 100;
int N;
do
N = Integer.parseInt(JOptionPane.showInputDialog("Numero di elementi dell'Array?"));
while (N<2 || N>1000); //l'utente può creare array fino a 1000 elementi
int[] Array = new int[N];
int[] Statx = new int[NUMCAS + 1]; //matrice di 101 elementi (da 0 a 100)
//riempie il vettore
for (int j=0; j<Array.length; j++)
Array[j] = (int) (Math.random() * NUMCAS + 1);
//Utilizzo Statx per calcolare le frequenze di ogni numero
for (int j=0; j<Array.length; j++)
Statx[Array[j]]++;
//Analizza Statx per trovare maggiore e minore frequenza
int max=0, min=100, itemMax=0, itemMin=0;
for (int j=0; j<NUMCAS+1; j++) {
if (max < Statx[j]) {max = Statx[j]; itemMax = j;}
if (min > Statx[j] && Statx[j]>1) {min = Statx[j]; itemMin = j;}
}
//stampa vettore
System.out.println("\nStampa vettore");
for (int j=0; j<Array.length; j++)
System.out.print("\t" + Array[j]);
System.out.println();
System.out.println("Numero con la massima frequenza: " + ((max>1) ? itemMax + " con frequenza " + max : "nessuno!"));
System.out.println("Numero con la minima frequenza: " + ((min>1) ? itemMin + " con frequenza " + min : "nessuno!"));
System.exit(0);
}
}