// Importazione di javabook: necessaria per utilizzare // MainWindow, InputBox e OutputBox import javabook.*; class CalcoloModa { public static void main(String[] args) { // Fase preliminare: impostazione interfaccia grafica MainWindow mw = new MainWindow("Conversione di Stringhe"); mw.show(); InputBox ib = new InputBox(mw, "Inserimento dati"); OutputBox ob = new OutputBox(mw, "Visualizzazione dati"); // Richiesta dati int numeroElementi = ib.getInteger("Quanti elementi? "); int valoreMax = ib.getInteger("Massimo valore consentito? "); // Richiesta dei valori all'utente e calcolo delle frequenze int[] frequenza = chiediValori(ib, numeroElementi, valoreMax); // Calcolo della posizione del massimo valore in un vettore int posizioneMax = calcolaPosizioneMax(frequenza); // Visualizza il risultato ob.printLine("Il valore della moda è " + posizioneMax); ob.show(); } private static int[] chiediValori( InputBox ib, int m, int n ) { // Creazione del vettore per il conteggio delle frequenze // Nel testo si assume che il valore minimo inseribile sia 0 int[] frequenza = new int[n + 1]; for (int i = 0; i < m; ++i) { int x = ib.getInteger("Inserisci valore: "); frequenza[x] += 1; } return frequenza; } private static int calcolaPosizioneMax( int[] v ) { int posMax = 0; for (int i = 1; i < v.length; ++i) { if (v[i] > v[posMax]) { posMax = i; } } return posMax; } }