/* Exemple de manipulation d'un types agrégé */ /* incluant un champ de type tableau */ /* appliqué au stockage d'un echantillon */ /* de valeurs numériques réelles */ public class EchantillonFraisesTagada { ///////////////////////////////////////////////// /* Type agrege de stockage d'un echantillon */ /* de poids pour 100 fraises Tagada */ static class EchantillonFraises { int numeroMachine = 0; String dateEchantillon = "01/01/1901"; double [] poids = new double[1000]; }; /* Fonction de calcul et retour du pourcentage */ /* de fraises présentes dans un echantillon */ /* qui ont un poids hors d'un intervalle */ /* [minimum,maximum] */ /* ef : L'echantillonFraises analysé */ /* minimum : La borne inférieure réelle */ /* de l'intervalle de recherche */ /* maximum : La borne supérieure réelle */ /* de l'intervalle de recherche */ static double pourcentagePoidsHorsLimites(EchantillonFraises ef, double minimum, double maximum) { double prctg; int i; int cpt; cpt = 0; for ( i = 0 ; i < ef.poids.length ; i = i+1 ) { if ( ( ef.poids[i] < minimum ) || ( ef.poids[i] > maximum ) ) { cpt = cpt+1; } } prctg = cpt/10.0; return prctg; } /* Fonction de calcul et retour de la valeur */ /* médiane du poids des fraises présentes */ /* dans un echantillon */ /* ef : L'echantillonFraises analysé */ static double medianePoids(EchantillonFraises ef) { double [] poidsTries = ensembleTrie(ef.poids); double mediane; int indice; indice = ef.poids.length/2-1; mediane = (ef.poids[indice]+ef.poids[indice+1])/2.0; return mediane; } /* Fonction de génération et retour */ /* du tableau de double contenant les mêmes */ /* valeurs qu'un tableau de double "source", */ /* mais ordonnées par ordre croissant */ /* src : Le tableau de double source */ static double [] ensembleTrie(double [] src) { int i,j ; double aux; int n = src.length; double [] dst = new double[n]; for ( i = 0 ; i < n ; i = i+1 ) { dst[i] = src[i]; } for ( i = 0 ; i < n-1 ; i++ ) { for ( j = 0 ; j < n-i-1 ; j++ ) { if ( dst[j] > dst[j+1] ) { aux = dst[j]; dst[j] = dst[j+1]; dst[j+1] = aux; } } } return dst; } ///////////////////////////////////////////////// static double nombreAleatoireNorme() { double v = 0; int i; for ( i = 0 ; i < 100 ; i = i+1 ) { v = v+Math.random(); } v = v/100; return v; } /* Programme principal */ public static void main(String [] args) { int i; EchantillonFraises echantillon = new EchantillonFraises(); echantillon.numeroMachine = 1; echantillon.dateEchantillon = "01/03/2019"; for ( i = 0 ; i < echantillon.poids.length ; i = i+1 ) { echantillon.poids[i] = 3.0*nombreAleatoireNorme(); } Ecran.afficherln(pourcentagePoidsHorsLimites(echantillon,0.1,2.9),"% hors de l'intervalle [0.1,2.9]"); Ecran.afficherln(pourcentagePoidsHorsLimites(echantillon,0.5,2.5),"% hors de l'intervalle [0.5,2.5]"); Ecran.afficherln(pourcentagePoidsHorsLimites(echantillon,1.0,2.0),"% hors de l'intervalle [1.0,2.0]"); Ecran.afficherln(pourcentagePoidsHorsLimites(echantillon,1.3,1.7),"% hors de l'intervalle [1.3,1.7]"); Ecran.afficherln(pourcentagePoidsHorsLimites(echantillon,1.4,1.6),"% hors de l'intervalle [1.4,1.6]"); Ecran.afficherln("Le poids médian est : ",medianePoids(echantillon)); } }