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 :

Chemin absolue vers chemin relatif


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut Chemin absolue vers chemin relatif
    Bonjour (je poste dans le forum algo, car ce probleme est recurent en bash, shell, C...)

    Savez vous comment transformer une chaine de caractere contenant un chemin absolue, en chemin relative a une troisieme chaine de caractere ?
    all your base are belong to us.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    bah tu cherches le dernier /, et tu supprimes tout jusque la...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    bah tu cherches le dernier /, et tu supprimes tout jusque la...
    Un peu court... Et faux.

    Un chemin "relatif" n'a de sens que par rapport à un autre chemin, absolu celui-ci, tu as donc deux paramètres :
    1. le chemin absolu que tu veux convertir, appelons le PATH
    2. le chemin absolu par rapport auquel tu veux convertir PATH, appelons le BASE.


    Il faut alors trouver le tronc commun de PATH et de BASE, les détails dépendent du système de fichier, mais par exemple sous Linux, on part de la racine et on prend le préfix commun le plus long entre PATH et BASE. Il faut alors établir de combien de répertoires il faut remonter à partir de BASE pour arriver au dernier répertoire commun à PATH et BASE, ça détermine combien de "../" tu dois enchaîner au début de ton chemin relatif, puis tu colle le suffixe de BASE au bout et ainsi tu as ton chemin relatif complet.

    --
    Jedaï

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    voui, je suis bien d'accord, mais vu la question, une fois que tu as la base (ce que tu as en enlevant tous les /), c'est quand meme pas mal facile de faire le relatif, non ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    voui, je suis bien d'accord, mais vu la question, une fois que tu as la base (ce que tu as en enlevant tous les /), c'est quand meme pas mal facile de faire le relatif, non ?
    Je crains de ne pas comprendre ce que tu veux dire par "enlever tous les /"...

    --
    Jedaï

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    bah c'est une question de point d evue...

    Je pars toujours quant a moi d'un des 2 repertoires finaux...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait, pour un chemin absolu, on a une infinité de chemins relatifs. (Tout est relatif ).

    Comme le dis Jedai, il faut être relatif à quelque chose. Il te faut donc en entrée : le chemin absolu ET le répertoire à partir du quel tu veux créer ton chemin relatif.

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    En fait, pour un chemin absolu, on a une infinité de chemins relatifs. (Tout est relatif ).
    Oui et non. Le système de fichiers fait une compression du chemin avant de l'utiliser (aka résolution), alors l' "infinité" de chemins relatifs est au final réduit à un seul (heureusement d'ailleurs).

    Un moyen simple pour faire ce que demande le PO, c'est d'utiliser la même structure de données que le système de fichiers: généralement un arbre (ou un graphe si vous aimez les boucles).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Un moyen simple pour faire ce que demande le PO, c'est d'utiliser la même structure de données que le système de fichiers: généralement un arbre (ou un graphe si vous aimez les boucles).


    Non le moyen simple est ce qu'a donne Jedai...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Non le moyen simple est ce qu'a donne Jedai...
    Jedai a décrit ce qu' "il faut" faire, mais pas le comment.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    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
    l1 = longueur chaine 1
    l2 = longueur chaine 2
     
    l = min ( l1, l2)
     
    pour i = 0 jusqu'a i < l
     
        si chaine1(i) different de chaine2(i)
            base = chaine1 tronquee a i
     
            n = 0
            pour j = i jusqu'a j < l
                si chaine1(j) egal  /
                    n = n + 1 
                fin si
            fin pour
     
            pour j = 0 jusqu'a  j < n 
                 chaine_relative = "../" concatene a chaine_relative
            fin pour
     
            concatener chaine2[i]->chaine2[l-1]  a chaine_relative
     
            sortie pour
         fin si
     
    fin pour
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Jedai a décrit ce qu' "il faut" faire, mais pas le comment.
    Si, à partir du moment où tu sais trouver le préfixe commun maximal (pas trop dur... ) de deux chaînes et que tu sais compter le nombre de "/" dans une chaîne de caractères (j'admets qu'il s'agit d'une tâche difficile, ne pas oublier de normaliser les chemins bien sûr), ce que j'ai écris est suffisant, sans utiliser de structure d'arbre. Bien évidemment la structure d'arbre est sous-jacente à la méthode.

    --
    Jedaï

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    [grilled]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  14. #14
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut
    Whaou ! Merci !!!!!
    J'ai lu l'algo avec attention et cela me semble fonctionner !
    Il me sera tres facile maintenant de l'écrire en C (que je fournirai quand je l'aurai implementé)
    all your base are belong to us.

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

Discussions similaires

  1. [Débutant] chemin absolu vers solution root
    Par developer5 dans le forum C#
    Réponses: 3
    Dernier message: 02/01/2012, 17h15
  2. remplacer chemin absolu par chemin relatif
    Par alaninho dans le forum Général Python
    Réponses: 11
    Dernier message: 19/05/2011, 11h23
  3. Changer un chemin absolue en chemin relatif
    Par Chillon dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/10/2010, 17h14
  4. Réponses: 3
    Dernier message: 20/08/2009, 12h52
  5. FIREFOX chemin absolu vers images (fctionne pas??)
    Par valal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/10/2005, 19h08

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