IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Recherche du max d'un tableau récursivement


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Recherche du max d'un tableau récursivement
    Aujourd'hui j'ai passé un devoir d'algorithme.
    SVP je veux une solution de cet exercice :
    Rechercher le maximum d'un tableau contenant n entiers mais avec un algorithme récursif.
    Voici ce que j'ai essayé pour la fonction Max :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function Max(t : tab , var n : integer ) : integer;
    begin
    if n = 1 then
      Max := t[n] 
    else if t[n] =< t[n-1] then
      Max := Max(t , n-1);
    end;
    Ca tourne pas.
    SVP montrez-moi ma faute...

  2. #2
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    logiquement, ce code fonctionne :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    max := MOINS_INFINI;
     
    function recherche_max(t : tableau; n : integer; var max : integer) : integer;
    begin
      if n > 1 then
      begin
        if t[n] > max then
          max := t[n];
        recherche_max(t, n - 1, max);
      end;
    result := max;
    end;
    Bon courage !

    Cordialement,
    Sidahmed.

  3. #3
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    bonjour
    voila j'ai une solution à te proposer j'avais un code comme ça en java et il fallait juste transformer en code Pascal
    la fonction high renvoie la taille du tableau passé en paramettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function recherche_max(t : tableau; pos : integer) : integer;
    var mxi:integer;
    begin
      if (pos =High(t)-1) then
         recherche_max:=t[pos]
      else if(pos<=High(t)) then
      begin
        mxi:=recherche_max(t,pos+1);
           if (t[pos] < mxi) then
              recherche_max:=mxi
           else
              recherche_max:=t[pos];
      end
      else
           recherche_max:=0;
    end;
    C'est le meme principe que avec uen boucle sauf bien sur que la c'est recursif
    donc pour commencer tu initialise pos a zero dans ton programme principal
    voila a plus
    Ps:sidahmed je vais jeter un coup d'oeil sur le code que tu propose mais a vue d'oeil il compilera pas
    Citation Envoyé par sidahmed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    max := MOINS_INFINI;
     
    function recherche_max(t : tableau; n : integer; var max : integer) : integer;
    begin
      if n > 1 then
      begin
        if t[n] > max then
          max := t[n];
        recherche_max(t, n - 1, max);
      end;
    result := max;
    end;
    @+
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  4. #4
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,
    Citation Envoyé par krachik Voir le message
    Ps:sidahmed je vais jeter un coup d'oeil sur le code que tu propose mais a vue d'oeil il compilera pas
    @+
    Ah bon ! Ça fonctionne parfaitement sous Delphi.

    Cordialement,
    Sidahmed.

  5. #5
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Autan pour moi je viens de tester sous Turbo Pascal 7.0 et comme j'avais dit il y a une erreur et il faut que cette fonction soit affecté a cette ligne la,
    c'est la différence en TP et Delphi et sous TP7 le result aussi n'existe pas,
    Désolé encore autant pour moi vu qu'on a pas les meme compilateur
    @+
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    dans le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function Max(t : tab , var n : integer ) : integer;
    begin
    if n = 1 then
      Max := t[n] 
    else if t[n] =< t[n-1] then
      Max := Max(t , n-1);
    end;
    il manque le traitement du cas n>1 et t[n] > t[n-1] :
    qui est le max dans ce cas ? :

    L'idée c'est que le max de t[1] à t[n] est le max entre
    1) t[n]
    2) le max de t[1] à t[n-1]

    d'où le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function Max(t : tab , var n : integer ) : integer;
    var M:integer;
    begin
    if n = 1 then
      Max := t[n] 
    else 
      begin M:=max(t,n-1);
              if M< t[n] then max:=t[n] else max:= M;
       end;
    end;

  7. #7
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    bonjour
    dans cas il faut enlever le var dans l'entete de la fonction et changer le "," en ";"
    Citation Envoyé par PierreVeuillez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Max(t : tab , var n : integer ) : integer;
    var M:integer;
    begin
    if n = 1 then
      Max := t[n] 
    else 
      begin M:=max(t,n-1);
              if M< t[n] then max:=t[n] else max:= M;
       end;
    end;
    et ensuite ne pas oublier d'initialiser n dans le code principale à la taille du tableau utilisé
    @+
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut merci
    je suis vraiment d'inscrire dans ce forum et je vous remercie
    vous êtes vraimebt tres gentil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TPW] Rechercher la plus grande valeur dans un tableau récursivement
    Par abdou monta dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 10/05/2013, 15h36
  2. Recherche des indices min et max dans un tableau 2D
    Par Bysbobo dans le forum LabVIEW
    Réponses: 3
    Dernier message: 03/05/2013, 08h36
  3. recherche valeur max dans un tableau
    Par www.rubis dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2011, 17h43
  4. [Turbo Pascal] Recherche du max d'un tableau d'entiers
    Par amin89 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 20/12/2009, 15h37
  5. Recherche Min/Max dans un tableau
    Par kuroro20 dans le forum C
    Réponses: 4
    Dernier message: 26/10/2007, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo