/**
    Classe della Prova di Esame di Programmazione I e Laboratorio
    del 4 settembre 2003
*/

public class ProvaArraySettembre {

    /**
    prende come parametro un array di elementi di tipo intero b
    e restituisce la media (un float) dei valori che compaiono
    nell'array b
    @param b array di elementi di tipo intero
    @return media dei valori in b.
    */
    public static float calcolaMedia(int[] b) {
        if ((b == null) || (b.length <= 0))
            throw new IllegalArgumentException("Array non inizializzato.");
        int somma = 0;
        for (int i=0; i < b.length; i++)
            somma += b[i];
        return ((float)somma) / b.length;
    }


    /**
    prende come parametro un array di elementi di tipo intero a
    e un float x e restituisce il numero di elementi in a
    di valore maggiore di x
    @param a array di elementi di tipo intero
    @param x maggiore di
    @return numero di elementi in a maggiori di x
    */
    public static int numeroPiuGrandi(int[] a, float x) {
        if ((a == null) || (a.length == 0))
            throw new IllegalArgumentException("Array non inizializzato");
        int ris = 0;
        for (int i=0; i < a.length; i++)
            if (a[i] > x) ris++;
        return ris;
    }


    /**
    prende come parametro un array di elementi di tipo intero c
    e restituisce il numero di elementi in c di valore maggiore
    della media dei valori che compaiono nell'array c stesso
    @param c array di elementi di tipo intero
    @return numero di elementi in a maggiori della media
    */
    public static int numeroPiuGrandiDellaMedia(int[] c) {
                return numeroPiuGrandi(c, calcolaMedia(c));
    }


    /**
        Risultato atteso dal main:

        Media ar1: 4.2
        Media ar2: 3.3333333
        Piu' grandi della media per ar1: 2
        Piu' grandi della media per ar2: 3


    */
    public static void main(String[] args) {
        int[] ar1 = {2, 6, 3, 4, 6};
        int[] ar2 = {1, 6, 3, 4, 2, 4};
        System.out.println("Media ar1: "
            + calcolaMedia(ar1));
        System.out.println("Media ar2: "
            + calcolaMedia(ar2));
        System.out.println("Piu' grandi della media per ar1: "
            + numeroPiuGrandiDellaMedia(ar1));
        System.out.println("Piu' grandi della media per ar2: "
            + numeroPiuGrandiDellaMedia(ar2));
    }

}