#include //#include using namespace std; const int MAX=200; void rechercheDichotomique ( const int tabE [MAX],const int x, const int n, int &rg, bool &t); int main() { int tab [MAX]; int rg;// indice ou x à été trouvé bool trouv; int x;// nombre a rechercher int n; // borne de recherche int i=0; while ( i != MAX ) //remplissage du tableau avec i = taille réelle du { tab [i] = i; i++; } cout<<"Entrer la borne maximal de recherche\n"; cin>> n; while ( n<0 || n>MAX) // traitement des exceptions car je n'ai pas réussi à gérer try,catch,throw { cout<<"Vous avez entre une borne maximal incohérente, entrer une nouvelle valeur :\n"; cin>>n; } cout<<"Entrer le nombre rechercher\n"; cin>> x; //try //{ rechercheDichotomique (tab, x, n, rg, trouv); //} //catch (out_of_range&) //{ // cout<<"Vous avez rentré une borne inchérente"; //} if (trouv) { cout<<"L'entier recherche est bien contenue dans le tableau au rang " << rg <<"\n"; } else { cout<< "L'entier rechercher ne se trouve pas dans les borne de recherche !\n"; } system("pause"); } void rechercheDichotomique ( const int tabE [MAX],const int x, const int n, int &rg, bool &t) //throws (out_of_range) { /*if (n<0 || n>i) { throw out_of_range; }*/ int iDebut = 0; int iFin = n; while ( iDebut < iFin && tabE[(iDebut+iFin)/2]!= x ) { if ( x < tabE[(iDebut+iFin)/2] ) { iFin = ((iDebut+iFin)/2)-1; //selection de la premiere partie de tableau } else { iDebut = ((iDebut+iFin)/2)+1; // selection de la deuxieme partie de tableau } } if ( tabE[(iDebut+iFin)/2] == x && iDebut<=iFin ) { t = true; rg = (iDebut+iFin)/2; } else { t = false; } }