/* Determination de la valeur minimale         */
/* contenue dans un tableau de reels double    */

public class ValeurMinimaleTableauReel {

/* Fonction d'initialisation d'un tableau      */
/* de double avec des reels tires au sort      */
/* entre 0.0 et 1.0                            */
/* t : Le tableau de double à initialiser      */

  static void initRand(double [] t) {
    int i;
    for ( i = 0 ; i < t.length ; i = i+1 ) {
      t[i] = Math.random(); }
  }

/* Fonction d'affichage des valeurs contenues  */
/* dans un tableau de double                   */
/* t : Le tableau de double à afficher         */
  
  static void affichageTableau(double [] t) {
    int i;
    for ( i = 0 ; i < t.length ; i = i+1 ) {
      Ecran.formater("%8.5f\n",t[i]); }
  }

/////////////////////////////////////////////////
  
/* Fonction de calcul et retour de la valeur   */
/* minimale d'un tableau de double             */
/* t : le tableau de réels où la recherche     */
/*     est effectuée                           */
  
  static double minimum(double [] t) {
    int i;
    double min;
    switch (t.length) {
      case 0 : {
        min = Double.NaN; }
        break;
      case 1 : {
        min = t[0]; }
        break;
      default : {
        min = t[0];
        for ( i = 1 ; i < t.length ; i++ ) {
          if ( t[i] < min ) {
            min = t[i]; } } } }
    return min;
  }
  
/////////////////////////////////////////////////
  
/* Programme principal                         */

  public static void main(String [] args) {
    double [] tb = new double[8];
    double vMin;
    initRand(tb);
    Ecran.afficherln("Tableau : ");
    affichageTableau(tb);
    vMin = minimum(tb);
    Ecran.formater("Valeur minimale : %8.5f\n",vMin);
  }
}