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

Algorithmes et structures de données Discussion :

Recherche algo tree


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Points : 314
    Points
    314
    Par défaut Recherche algo tree
    Salut,

    Où est-ce que je peux trouver l'algo de la commande tree (linux) ? En fait ce n'est pas de la source en C dont j'ai besoin mais de l'idée algoritmique qu'il y a derrière...
    Je suis sur que l'algo derrière ce procédé d'affichage des dossier-sousdossier-fichier ne fait pas plus de 20 lignes...
    Mon but est de l'adapter en php pour une histoire d'arborescence de réponses père-fils...un forum koi!

    Merci,
    Vincent.

    PS: Ce qui me pose le plus de problème, c'est les barres verticales qui sont à gauches!!!
    PS2: J'accepte le C comme base algoritmique

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2002
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Ce doit sûrement être un algorithme récursif, comme presque tous les algos manipulant les arbres.

  3. #3
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    Ben vi, je suis comme David R. ca doit etre un algo recursif : du style


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Parcours(rep:chaine)
    Début
      Pour chaque élt de rep
        Si élt EstUnRepertoire alors Parcours(élt)
      Fin Pour
    Fin
    Maintenant c'est à toi de mettre le traitement que souhaites faire en préfixé, postfixé, infixé.
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 10
    Points : 135
    Points
    135
    Par défaut
    Hello !

    C'EST UN ALGOTHME RECURSIF et je l'ai fait en Pascal. Il fonctionne à merveille, et tu as même le schéma (dessin de l'arbre).
    Si tu veux les sources : lankri_said@yahoo.fr
    @+

    Saïd LANKRI, lankri_said at yahoo.fr

    Billou : "TUEZ-LES TOUS ! DIEU RECONNAITRA LES SIENS !"

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Voila ce que j'ai fait!
    Voila grossièrement ce que j'ai fait pour l'instant!!! Ca marche, mais le problème maintenant, c'est la barre | sur le côté gauche...

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
      function affich_arbre($infos_replies, $row, $prefix="") {
        $infos_replies->seek($row) ;
        $i = 0 ;
        $id_currentr = $infos_replies->f("RPY_ID") ;
        //Si le message courrant est un message père.
        if($infos_replies->f("RPY_ISFATHER") != 0) {
          //On met tous les fils dans un tableau (seul moyen pour connaitre le dernier!)
          $j = $row ;
          $infos_replies->seek($i) ;
          $nf = $infos_replies->nf() ;
          while&#40;$j<$nf&#41; &#123;
    	$infos_replies->seek&#40;$j&#41; ;
    	$infos_replies->next_record&#40;&#41; ;	
    	if&#40;$infos_replies->f&#40;"RPY_FATHER_ID"&#41; == $id_currentr&#41; &#123;
    	  $tab&#91;$i&#93; = $j ;
    	  $i++ ;
    	&#125;
    	$j++ ;
          &#125;
        &#125;
        $i = 0 ;
        while&#40;$tab&#91;$i&#93;&#41; &#123;
          $infos_replies->seek&#40;$tab&#91;$i&#93;&#41; ;
          $infos_replies->next_record&#40;&#41; ;
          //Si c le dernier des messages fils!
          if&#40; &#40;$i-1&#41; == count&#40;$tab&#41;&#41; &#123;
    	echo $prefix."`-- ".$infos_replies->f&#40;"USR_LOGIN"&#41;."<br>" ;
          &#125;else &#123;
    	echo $prefix."|-- ".$infos_replies->f&#40;"USR_LOGIN"&#41;."<br>" ;
          &#125;
          if&#40;$infos_replies->f&#40;"RPY_ISFATHER"&#41; != 0&#41; &#123;
    	$prefix.= "|&nbsp;&nbsp;" ;
    	$this->affich_arbre&#40;$infos_replies, $i, $prefix&#41; ;
          &#125;
          $i++ ;
        &#125;
     
      &#125;
    Donc, si tu pouvais me montrer tes sources, ce serait coool: cult@free.fr

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Pour être plus clair!
    Voila l'algo en python:
    def affiche_arbre(repertoire='.', prefix=''):
    sousrep = listdir(repertoire)
    for f in sousrep:
    if f is sousrep[-1]:
    # pour la dernière entrée du répertoire, on met un `
    # plutôt qu'un |
    print prefix + '`-- ' + f
    else:
    print prefix + '|-- ' + f
    fullname = join(repertoire,f)
    if isdir(fullname):
    affiche_arbre(fullname,prefix+'| ')
    }
    Le problème, c'est qu'il n'affiche JAMAIS les 2 espaces: ' ' Et qu'il met tout le temps une barre oblique!!!
    Or souvent, l'espace entre les | est bien plus grand que deux espaces !

    Si on regarde par exemple ce système d'arborescence, il y a des endroits ou les espaces sont bien plus grands...si vous voyez ce que je veux dire.
    http://www.phpinfo.net/phorum/read.p...6&t=127256&v=t

    J'aimera trouver un algorithme où il y aurait en plus comme préfix: ' ' et non pas que des préfix avec des |

    Merci de votre aide, je commence à désespérer.[/code]

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 10
    Points : 135
    Points
    135
    Par défaut
    Salut !
    Je suis en colère, je t'ai passé le programme, et depuis, je n'ai pas eu de réponse !

    Attention, j'aurai tendance à croire que tu fais partie de ces 99,99999% des programmeurs qui demandent qqc, puis quand on la leur donne, ils ne donnt plus signe de vie. Même pas un merci, c'est quand même grave !

    Personnellement, tu n'est pas le premier à me demander un programme, et 99,9999999% (si ce n'est plus) se sont "tirés" sans un mot.

    Franchement, je ne sais quoi penser. Faut-il que je continue à donner mes programmes. Après tout, je suis ici pour aider les autres. Mais un merci est toujours appréciable.

    Mes programmes sont de qualité, parmi les meilleurs, bien faits. Je ne les ferai jamais payer, cer je suis pro-OpenSource.
    @+

    Saïd LANKRI, lankri_said at yahoo.fr

    Billou : "TUEZ-LES TOUS ! DIEU RECONNAITRA LES SIENS !"

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Excuse-moi!
    Sisi,

    C'est bon, mais je viens tout juste de finir la traduc en shell, c'est pour ca que j'avais pas répondu...
    La voila si tu veux:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #! /bin/sh
     
     
    # Le premier paramètre est le rép à afficher
    if &#91; -z $1 &#93;; then
        echo "$0&#58; usage tree.sh <directory> &#91;depth&#93;" > /dev/stderr
        exit 1;
    fi
    if &#91; ! -d $1 &#93;; then
        echo $0&#58; $1 is not a directory > /dev/stderr
        exit 1;
    fi
     
    dir_to_print=`cd $1; pwd`
    # On s'assure que la profondeur sera positionnée à -1 par défaut
    profondeur=$&#123;2&#58;--1&#125;
     
    affich_arbre&#40;&#41; &#123;
        # Recup des params
        local name=$1
        local prefix=$2
        local depth=$&#123;3&#58;--1&#125;
     
        # On s'arrête si on a atteint la profondeur demandée
        if &#91; $depth -ne -1 &#93;; then
            if &#91; $depth -eq 0 &#93;; then
                return
            else
                depth=$&#91; $depth-1 &#93;      
            fi
        fi
        # vérifier si on est un répertoire pour la récursivité
        if &#91; -d $name &#93;; then
            cd $name
            local files=`/bin/ls`
            local i=`/bin/ls | wc -l`
            for file in $files; do
                if &#91; $i -eq 1 &#93;; then
                    echo "$&#123;prefix&#125;\`-- "$&#123;file&#125;
                    affich_arbre $file "$&#123;prefix&#125;   " $depth
                else
                    echo "$&#123;prefix&#125;|-- "$&#123;file&#125;
                    affich_arbre $file "$&#123;prefix&#125;|  " $depth
                fi
                i=$&#91; $i-1 &#93;
            done
            cd ..
        fi
    &#125;
    echo "$dir_to_print &#40;profondeur=$profondeur&#41;"
    affich_arbre "$dir_to_print" "" $profondeur
    exit 0
    Donc je me suis belle et bien servi de ton code comme base...Merci, maintenant, il va falloir que je traduise en php pour mon pb de réponses récursives!

    ++

  9. #9
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    si tu aide les autres pour entendre un merci...
    personne ne t'as forcé à lui donner tes sources qui sont parmis les meilleures...

  10. #10
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 10
    Points : 135
    Points
    135
    Par défaut
    C'est vrai, personne ne m'a forcé. Je considère seulement que c'est mon devoir de les donner, parceque je suis sur ce forum, c'est tout.
    @+

    Saïd LANKRI, lankri_said at yahoo.fr

    Billou : "TUEZ-LES TOUS ! DIEU RECONNAITRA LES SIENS !"

  11. #11
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    En attendant, c'est avec des NonMerci Attitudes que les plus forts ne reiendront plus sur le forum .

    A tous ceux qui pratiquent la NonMerciAttitude, prenez conscience de ce que vous faite.....



    Attention, trop de Merci tue le Merci.

    C'etait un Message de la MerciAndFun(M.A.F)

Discussions similaires

  1. [Recherche Algo] Distance levenshtein
    Par Finidrigoler dans le forum Langage
    Réponses: 8
    Dernier message: 09/09/2009, 01h43
  2. Recherche algo pour Merger deux arbres
    Par L4BiN dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 28/04/2008, 08h52
  3. Recherche algo pour calculer les n°AR
    Par Barbibulle dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 25/10/2007, 19h47
  4. Recherche algo du simplexe
    Par elamarti dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 19/02/2007, 18h39
  5. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 15h20

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