/******************************************************* ******************************************************* ** Completare la classe aggiungendo la definizione ** ** dei metodi usati dal main ** ** I metodi devono essere definiti all'interno ** ** della classe Esercitazione6 ** ** indifferentemente prima o dopo il main ** ******************************************************* ******************************************************* * ******** * visualizzaVettore: deve visualizzare, usando System.out.print * e System.out.println, * una riga contenente un messaggio, seguita dagli elementi * dell'array separati da due spazi. * L'array e il messaggio vengono passati come parametri. * Dopo aver visualizzato l'ultimo elemento e' necessario andare a capo. * Per esempio: Ecco il vettore a 1 42 0 344 5 6 * ******** * media: restituisce (NON STAMPA!) la media (double) degli elementi * dell'array passato come parametro. * ******** * prodottoScalare: restituisce (NON STAMPA) il prodotto scalare (int) dei due * array passati come parametri. * Nel caso dei vettori a e b dell'esempio, il risultato deve essere 9469 * Si assume che i due array abbiano la stessa lunghezza. * ******** * contaZeri restituisce il numero di elementi pari a zero trovati * nell'array parametro * ******** * contaMaggiori restituisce il numero di elementi nell'array * primo parametro che sono maggiori del valore del secondo parametro * ******** * compatta: riceve come parametro un array di interi, e restituisce il * riferimento a un nuovo array. * Il metodo deve creare un nuovo array di dimensione pari al numero di * elementi del primo array diversi da zero (per contare tali elementi * si puo' usare il metodo contaZeri), * e inserire nel nuovo array tali elementi. Gli elementi devono * essere copiati conservando l'ordine in cui compaiono nel primo array. * Nel caso dell'array b inizializzato nel codice, l'array compattato * conterra' gli elementi 5 18 25 18 * ******** */ public class Esercitazione6Svolta { public static void visualizzaVettore(int[] x, String messaggio) { System.out.println(messaggio); for(int i = 0; i < x.length; i++) System.out.print(x[i] + " "); System.out.println(); } public static double media(int[] x) { double m = 0; for(int i = 0; i < x.length; i++) m += x[i]; return m/x.length; } public static int prodottoScalare(int[] x, int[] y) { int p = 0; for(int i = 0; i < x.length; i++) p += x[i] * y[i]; return p; } public static int contaZeri(int[] x) { int conta = 0; for(int i = 0; i < x.length; i++) if(x[i] == 0) conta++; return conta; } public static int contaMaggiori(int[] x, int t) { int conta = 0; for(int i = 0; i < x.length; i++) if(x[i] > t) conta++; return conta; } public static int[] compatta(int[] x) { int[] vettCompatto = new int[x.length-contaZeri(x)]; int nonzero = 0; for(int i = 0; i < x.length; i++) if(x[i] != 0) { vettCompatto[nonzero] = x[i]; nonzero++; } return vettCompatto; } public static void main(String[] vv) { /* * gli array seguenti sono inizializzati per semplificare * la messa a punto dei metodi * Naturalmente il codice scritto deve funzionare correttamente * qualunque sia il contenuto degli array */ int[] a = {1,42,0,344,5,6}; int[] b = {5,18,0,25,0,18}; int prodotto; visualizzaVettore(a, "Ecco il vettore a"); visualizzaVettore(b, "Ecco il vettore b"); if(media(a) > 50) System.out.println("La media di a e' maggiore di 50"); else System.out.println("La media e' maggiore di 50"); prodotto = prodottoScalare(a,b); System.out.println("Il prodotto scalare e' " + prodotto); int numZeriB = contaZeri(b); System.out.println("Il vettore b contiene "+numZeriB+" elementi pari a zero"); System.out.println("Il vettore a contiene "+contaZeri(a)+" elementi pari a zero"); System.out.println("Il vettore b contiene "+contaMaggiori(b, 15)+" elementi maggiori di 15"); int[] bCompatto = compatta(b); visualizzaVettore(bCompatto, "Ecco il vettore b, senza gli zeri"); System.exit(0); } }