Aller au contenu

Recherche dichotomique


Wild

Messages recommandés

VIP, Lonesome Cowboy, 38ans Posté(e)
Wild VIP 3 879 messages
38ans‚ Lonesome Cowboy,
Posté(e)

alors voila, je dois coder une recherche dichotomique dans un tableau trié, en Pascal, et je ne sais pas pourquoi, mais il ne veut pas me trouver la valeur quand elle est dans la derniere case du tableau : /

Pour ce qui est des variables .. pas de variables globales

Mon tableau est un tableau d'entiersde 1 à N avec N=15

(j'ai essayé avec N=14 et 10 mais ca ne change rien)

si une ame charitable pouvais me dire ou est mon erreur ca me sauverai la vie

Function RechDich(var Tab:TTab):integer;
Var Min,Mil,Max:integer;
 Begin
   Min:=1;         // le minimum de mon tableau
   Max:=N;         // le maximum de mon tableau
   Mil:=(Max+Min) DIV 2;
   Write(' Entrez le nombre a chercher : ');
   Readln(Result);

      // Parcours le tableau
   While (Mil<>Min) do begin

       // Le cas ou la valeur cherchée est dans la premiere partie du tableau
     If Tab[Mil]>Result then begin
       Max:=Mil;
       Mil:=(Max+Min) DIV 2;
       end
         // Le cas ou la valeur cherchée est dans la deuxieme partie du tableau
     else begin
       Min:=Mil;
       Mil:=(Max+Min) DIV 2;
     end;
   end;
       // Verifie si la valeur est ou pas dans le tableau
   If Tab[Mil]=Result then begin
     Writeln('La valeur ',Result,' se situe a l''indice ',Min);
     Readln;
     end
   else begin
       Writeln('La valeur ',Result,' n''est pas dans le tableau');
       Readln;
    end;
 end;

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
VIP, Lonesome Cowboy, 38ans Posté(e)
Wild VIP 3 879 messages
38ans‚ Lonesome Cowboy,
Posté(e)

bon je suis me suis fait interoger par le prof et apparemment il suffisait juste de rajouter une ligne de code testant directement la derniere case de mon tableau

.. pour ceux qui auraient cherché et n'avait pas trouvé la solution

Lien à poster
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×