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

Turbo Pascal Discussion :

Rechercher la plus grande valeur dans un tableau récursivement


Sujet :

Turbo Pascal

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Points : 59
    Points
    59
    Par défaut Rechercher la plus grande valeur dans un tableau récursivement
    Bonjour

    Je ne sais pas pourquoi la fonction retourne toujours la valeur 21!
    t : tableau de n cases.
    voici le code

    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
    function det_max ( t : tab; n, x : byte ): byte;
    var
    max : byte;
    begin
    if x = n then
    	max := t[n]
    else
    	begin
     
    		if t[x] < max then
    			max := det_max(t, n, x+1 )
    		else
    			max := t[x];
    	end;
    end;

  2. #2
    Membre averti Avatar de Cortomatt
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 413
    Points
    413
    Par défaut
    Bonjour.

    Il manque un Cdlt.
    Musique et films playmobil en stopmotion : https://www.youtube.com/channel/UCeX...HZ4DicZiSrkpYQ

  3. #3
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Pourquoi on vous apprend encore à programmer en recursif !

    Pardon, pourquoi on vous apprend à saturer la pile inutilement ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure getMax(aArray: array of integer; var aIndex, aValue: integer);
    var X: integer;
    begin
      aIndex := low(aArray);
      aValue := aArray[aIndex];
      for X := aIndex+1 to high(aArray) do
        if aArray[X] > V then
        begin
          aValue := aArray[X];
          aIndex := X;
        end;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    c'est un exercice
    merci

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 951
    Points
    3 951
    Par défaut
    La récursivité n'est pas nocive mais il ne faut pas en abuser mais elle est pertinente pour les algo qui sont récursifs par nature. En l'espèce, l'emploi de la récursivité ici est sans doute abusif, Pascal n'est pas Lisp.

    Turbo Pascal permet de limiter l'impact la casse avec les procédures imbriquées, on évite le passage du tableau dans la partie récursive.

    Ton algorithme me semble bizarre, l'emploi de la variable locale max est cavalier car elle n'est pas initialisée


    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
    18
    19
    20
    21
    22
    23
     
    function det_max ( t : tab): byte;
     
      procedure internal_det_max(x: byte): byte;
      var TempRes : Byte;
      begin
        if x = High(t) then
        begin
           (* garantit la fin de la récursion *)
           internal_det_max := t[n];
        end
        else
        begin 
          TempRes := internal_det_max(x+1);    
          if t[x] < TempRes then
            internal_det_max := TempRes
          else
            internal_det_max := t[x];
        end;
      end;
    begin
       det_max :=  internal_det_max(Low(t));
    end;
    Cela est à tester en TurboPascal (pas de Result)
    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. [Free Pascal] Recherche de la plus grande valeur d'un tableau et de son rang
    Par TheSpecialOneDZ dans le forum Free Pascal
    Réponses: 2
    Dernier message: 23/12/2014, 19h27
  2. Rechercher la plus grande valeur
    Par pelloq1 dans le forum Requêtes
    Réponses: 5
    Dernier message: 03/03/2008, 15h50
  3. Réponses: 6
    Dernier message: 09/10/2007, 12h19
  4. Rechercher la plus proche valeur dans un tableau
    Par neoMatrix dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/05/2007, 11h45
  5. rechercher la plus proche valeur dans un tableau ?
    Par Slumpy dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/04/2007, 14h06

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