/* Recherche de la presence d'une valeur entiere */
/* dans un tableau d'entiers trie                */
/* par ordre croissant                           */
/* Methode sequentielle                          */

public class RecherchePresenceMethodeSequentielle {

///////////////////////////////////////////////////

/* Recherche sequentielle de la presence         */
/* d'un int dans un tableau de int trié          */
/* par ordre croissant                           */
/* Retour de true si présent, false sinon        */
/* v : Entier recherché                          */
/* t : Tableau d'entiers de recherche            */
/*     (trié par ordre croissant)                */

  static boolean estPresent(int v,int [] t) {
    boolean run = true;
    boolean trouve = false;
    int i = 0;
    while ( run == true ) {
      if ( t[i] == v ) {
        run = false;
        trouve = true; }
        else {
          if ( t[i] > v ) {
          run = false; }
          else {
          i++;
          if ( i == t.length ) {
            run = false; } } } }
    return trouve;
  }

/* Recherche sequentielle de la presence         */
/* d'un int dans un tableau de int trie          */
/* Version optimisee                             */
/* v : Entier recherché                          */
/* t : Tableau d'entiers de recherche            */
/*     (trié par ordre croissant)                */

  static boolean estPresent2(int v,int [] t) {
    int i = 0;
    while ( ( i != t.length ) && ( t[i] < v ) ) {
      i++; }
    return ( ( i < t.length ) && ( t[i] == v ) );
  }

///////////////////////////////////////////////////

/* Fonction d'affichage des valeurs contenues    */
/* dans un tableau de int                        */
  
  static void affichageTableau(int [] t) {
    for ( int i = 0 ; i < t.length ; i++ ) {
      Ecran.formater("%4d",t[i]); }
  }

/* Fonction de creation d'un tableau de 10 int   */
/* initialise avec des valeurs croissantes       */
  
  static int [] initRandCroissant() {
    int [] t = new int[10];
    t[0] =(int) (Math.random()*3.0);
    for ( int i = 1 ; i < t.length ; i++ ) {
      t[i] = t[i-1] + (int) (Math.random()*3.0); }
    return t;
  }
  
/* Programme principal                           */

  public static void main(String [] args) {
    boolean present;
    int [] t;
    int v;
    t = initRandCroissant();
    affichageTableau(t);
    Ecran.sautDeLigne();
    Ecran.afficher("SVP, valeur à rechercher : ");
    v = Clavier.saisirInt();
    present = estPresent(v,t);
    Ecran.afficherln(v," present : ",present);
    present = estPresent2(v,t);
    Ecran.afficherln(v," present : ",present);
  }
}