/*
  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);             
  
  }
}