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