Algorithme de recherche dichotomique
Résolu/Fermé
rafikadouni
Messages postés
4
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
30 mai 2008
-
6 mai 2008 à 00:58
fassou - 25 avril 2010 à 22:41
fassou - 25 avril 2010 à 22:41
A voir également:
- Recherche dichotomique récursive c
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche image - Guide
- Recherche de personne par nom et prénom - Forum Mail
- Recherche musique - Guide
3 réponses
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
5 juin 2008 à 15:41
5 juin 2008 à 15:41
Je n'ai pas compris ta question. As-tu lu le lien ci-dessus ?
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
6 mai 2008 à 01:47
6 mai 2008 à 01:47
Google t'aurait directement donné :
https://fr.wikipedia.org/wiki/Dichotomie
Bonne chance
https://fr.wikipedia.org/wiki/Dichotomie
Bonne chance
25 nov. 2008 à 10:52
17 mars 2009 à 15:32
program recherche_dichotomique;
uses wincrt;
type vect=array [1..50] of integer;
var n,e,i:integer;
t:vect;
exist:boolean;
procedure remplir (var t:vect;var n:integer);
var i:integer;
begin
repeat
write ('taper un entier:'); readln (n);
until n in [1..50];
write ('t[',1,']='); readln (t[1]);
for i:=2 to n do
begin
repeat
write ('t[',i,']='); readln(t[i]);
until t[i]>=t[i-1];
end;
write ('donner e:'); readln (e);
end;
function rech_dicho (var t:vect; var n,i:integer):boolean;
var trouve:boolean;
m,debut,fin:integer;
begin
debut := 1;
fin:=n;
trouve:=false;
repeat
m:=(debut+fin)div 2;
if t [m]= e then begin
trouve:= true;
end
else if t[m]<e then begin
debut:= m+1;
end
else begin
fin:=m-1;
end;
until (trouve=true) or (debut>fin);
rech_dicho:=true;
end;
begin
remplir (t,n);
exist:=rech_dicho (t,n,e);
if exist = true then begin
write (e ,'existe dqns T');
end
else begin
write (e ,'n"existe pas dans T');
end;
end.
5 mai 2009 à 11:06
type vect=array [1..50] of integer;
var n,e,i:integer;
t:vect;
exist:boolean;
procedure remplir (var t:vect;var n:integer);
var i:integer;
begin
repeat
write ('taper un entier:'); readln (n);
until n in [1..50];
write ('t[',1,']='); readln (t[1]);
for i:=2 to n do
begin
repeat
write ('t[',i,']='); readln(t[i]);
until t[i]>=t[i-1];
end;
write ('donner e:'); readln (e);
end;
function rech_dicho (var t:vect; var n,i:integer):boolean;
var trouve:boolean;
m,debut,fin:integer;
begin
debut := 1;
fin:=n;
trouve:=false;
repeat
m:=(debut+fin)div 2;
if t [m]= e then begin
trouve:= true;
end
else if t[m]<e then begin
debut:= m+1;
end
else begin
fin:=m-1;
end;
until (trouve=true) or (debut>fin);
if trouve=true then
rech_dicho:=true
else
rech_dicho:=false;
end;
begin
remplir (t,n);
exist:=rech_dicho (t,n,e);
if exist = true then begin
write (e ,'existe dqns T');
end
else begin
write (e ,'n"existe pas dans T');
end;
end.
4 févr. 2010 à 22:16
on a un tableau : 22233455677
le 2eme tableau va aficher 234567 svp aidez moi
25 avril 2010 à 22:41
program recherche_dichotomique;
uses wincrt;
type vect=array [1..50] of integer;
var n,e,i:integer;
t:vect;
exist:boolean;
procedure remplir (var t:vect;var n:integer);
var i:integer;
begin
repeat
write ('taper un entier:'); readln (n);
until n in [1..50];
write ('t[',1,']='); readln (t[1]);
for i:=2 to n do
begin
repeat
write ('t[',i,']='); readln(t[i]);
until t[i]>=t[i-1];
end;
write ('donner e:'); readln (e);
end;
function rech_dicho (var t:vect; var n,i:integer):boolean;
var trouve:boolean;
m,debut,fin:integer;
begin
debut := 1;
fin:=n;
trouve:=false;
repeat
m:=(debut+fin)div 2;
if t [m]= e then begin
trouve:= true;
end
else if t[m]<e then begin
debut:= m+1;
end
else begin
fin:=m-1;
end;
until (trouve=true) or (debut>fin);
rech_dicho:=trouve; {sinon l'élément sera toujours existant dans le tableau}
end;
begin
remplir (t,n);
exist:=rech_dicho (t,n,e);
if exist = true then
writeln (e,' existe dqns T')
else
writeln (e,' n''existe pas dans T');
end.