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

C Discussion :

Probleme--Les arbres en c --


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par défaut Probleme--Les arbres en c --
    le probleme c 'est
    comment generaliser un programme qui traiter arbre qlq .. d'une maniere itérative et récursive??

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    "qlq itérative et récursive" : syntax error.

    Parle d'une manière compréhensible, s'il te plait.

    Et ne crie pas, merci.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    "qlq itérative et récursive" : syntax error.

    Parle d'une manière compréhensible, s'il te plait.

    Et ne crie pas, merci.
    cest a dire d'une maniere itérative et recursive..

    merci davance

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Dans ce cas, c'est Deux programmes, non ?

    De plus, les arbres ne sont pas tous traitables sans récursivité (sachant que du "itératif avec pile", ça reste du récursif pour moi).
    Plus d'informations sur les arbres ici: http://www.developpez.net/forums/sho...13&postcount=3
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Dans ce cas, c'est Deux programmes, non ?
    Bah c'est plus précisément 2 algo donc ça peut être simplement 2 fonctions...

    Citation Envoyé par Médinoc Voir le message
    De plus, les arbres ne sont pas tous traitables sans récursivité (sachant que du "itératif avec pile", ça reste du récursif pour moi).
    Exact. Etant donné que dans les arbres simplement binaires (g/d) il faut mémoriser le noeud central pour pouvoir, après avoir traiter le coté g, y revenir pour traiter le coté d (et ce pour chaque noeud dont le nombre n'est pas connu), la récursivité (réelle ou simulée) reste obligatoire. Mais certaines personnes disent que faire un algo itératif avec pile reste itératif. C'est une question de nuance (ou de point de vue)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    En informatique on parle de récursivité quand une fonction s'appelle elle même .
    Donc une fonction qui traite une pile, simulant en partie le passage de paramètre à une autre fonction, et ne s'appelle pas elle même reste itérative .

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dayssam Voir le message
    le probleme c 'est
    comment generaliser un programme qui traiter arbre qlq itérative et récursive??
    De rien.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par défaut Probleme -- jai besoin de traduction avec les arbres
    slt

    jai besoin des commentaires et traduction pour ce code la pour les debutants

    et merci davance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct node { 
        int data; 
        struct node* left; 
        struct node* right; 
    }

    Lookup()
    Given a binary search tree and a "target" value, search the tree to see if it contains the target. The basic pattern of the lookup() code occurs in many recursive tree algorithms: deal with the base case where the tree is empty, deal with the current node, and then use recursion to deal with the subtrees. If the tree is a binary search tree, there is often some sort of less-than test on the node to decide if the recursion should go left or right.
    /*
    Given a binary tree, return true if a node
    with the target data is found in the tree. Recurs
    down the tree, chooses the left or right
    branch by comparing the target to each node.
    */
    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
    static int lookup(struct node* node, int target) { 
      // 1. Base case == empty tree 
      // in that case, the target is not found so return false 
      if (node == NULL) { 
        return(false); 
      } 
      else { 
        // 2. see if found here 
        if (target == node->data) return(true); 
        else { 
          // 3. otherwise recur down the correct subtree 
          if (target < node->data) return(lookup(node->left, target)); 
          else return(lookup(node->right, target)); 
        } 
      } 
    }

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ce code suit le principe de base de la recherche récursive dans un arbre binaire:
    1. Si le noeud est nul, on n'a pas trouvé.
    2. On vérifie si la clé du noeud courant est celle recherchée. Si oui, on retourne la valeur.
    3. Sinon, il faut chercher dans un des noeuds fils: Si la clé est inférieure à la clé du noeud courant, on cherche dans le fils de gauche. Sinon, dans le fils de droite.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    [*]Sinon, il faut chercher dans un des noeuds fils: Si la clé est inférieure à la clé du noeud courant, on cherche dans le fils de gauche. Sinon, dans le fils de droite.
    Exact. Et d'ailleurs ceci m'amènerait à modifier un poil la fin de la fonction pour la remplacer par une instruction qui, pour moi, illustre mieux cette dernière phase en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // 3. otherwise recur down the correct subtree 
          if (target < node->data) return(lookup(node->left, target)); 
          else return(lookup(node->right, target));
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // 3. otherwise recur down the correct subtree 
          return lookup(target < node->data ?node->left :node->right, target);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    La fonction peut-être, mais l'algorithme lui-même reste récursif.
    Si l'algorithme "s'appelle" lui même explicitement oui .

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

Discussions similaires

  1. probleme avec les arbres
    Par info_amel dans le forum C++Builder
    Réponses: 12
    Dernier message: 04/09/2007, 00h04
  2. Problèmes de pointeurs avec les arbres
    Par thierry57 dans le forum C
    Réponses: 17
    Dernier message: 22/12/2005, 23h35
  3. Tutoriel sur les arbres
    Par emidelphi77 dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2005, 23h09
  4. [LG]Les Arbres
    Par SaladinDev dans le forum Langage
    Réponses: 6
    Dernier message: 08/03/2005, 11h51
  5. Recherche documentation sur les arbres
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 22/09/2004, 01h40

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