program dichotomique ; uses wincrt ; type tab = array [1..20] of integer ; var t : tab ; n,e : integer ; x : boolean ; procedure saisie ( var n,e : integer ;var t :tab); var i : integer ; begin repeat writeln('Saisir la taille du tableau :'); readln(n); until n in [5..20]; for i:= 1 to n do begin repeat writeln('Saisir l''élement ',i); readln(t[i]); until t[i] > 0 ; end; writeln('saisir un entier :'); readln(e); end; function existe (n,e : integer ; t :tab) : boolean ; var i,bi,bs : integer ; x : boolean ; begin x:=false ; bi:=1 ; bs:=n ; repeat n:=(bi+bs) div 2 ; if t[n] = e then x:=true else if t[n] < e then bi:=n+1 else bs:=n-1 ; until (x=true) or (bi >= bs) ; end; begin saisie(n,e,t); x:=existe(n,e,t); if x=true then writeln(e,' existe dans le tableau') else if x=false then writeln(e,' n''existe pas dans le tableau'); end.