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 :

Tester une chaine dans une chaine


Sujet :

Algorithmes et structures de données

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut Tester une chaine dans une chaine
    salut mes amis
    j'ai un problème je cherche a tester si une chaine de caractère appartient dans une chaine
    comment je dois tester caractère par caractère par exemple
    si j'ai X = "abr" et Y="abcder"
    alors X appartient dans Y
    et si j'ai X ="aS" alors n'appartient pas car S n'appartient pas dans Y

    merci de bien vouloir m'aider

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Regarde du côté de la fonction find_first_not_of de la classe std::string.

  3. #3
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci ami mais je t'ai pas bien compris ,slt soie un peu claire et si c'est possible avec un exemple

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Oups désolé je me croyais dans le forum C++.

    Il suffit de vérifier à l'aide de deux boucles imbriquées que chaque caractère de la première chaine se trouve bien dans la seconde.

  5. #5
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    mais pas facile amis

  6. #6
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    l=longueur de X (en otant les doublons si tu veux, ou pas)
    i=0
    tu parcours Y: si le caractère c en cours est dans X alors tu incrémentes i.
    tu sors dès que i=l ou si tu as parcouru tout Y
    si i=l alors X est dans Y
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  7. #7
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    mais comment je dois sortir si la chaine égale AC et C n'appartient pas à CDE
    car une fois je trouve un caractére n'appartient pas a la chaine alors je dois sortir et afficher faux

  8. #8
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    je ne comprends pas ta réponse --> mon post fonctionne dans l'autre sens, en parcourant Y, pas X...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    euhh... quand je lis ceci :
    si j'ai X = "abr" et Y="abcder"
    alors X appartient dans Y
    je suis un peu perdu.

    personnellement le retrouve nulle part "abr" dans "adcder". A moins que tu ne cherches la chaine "a*b*r*".
    Autrement dit si on a les caractères a, b & r dans un autre string mais pas forcément l'un à coté de l'autre. Bref il ne faut pas que cela soit la chaine "abr".

    c'est ca ?

  10. #10
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par rafuoner
    euhh... quand je lis ceci :


    je suis un peu perdu.

    personnellement le retrouve nulle part "abr" dans "adcder". A moins que tu ne cherches la chaine "a*b*r*".
    Autrement dit si on a les caractères a, b & r dans un autre string mais pas forcément l'un à coté de l'autre. Bref il ne faut pas que cela soit la chaine "abr".

    c'est ca ?

    ==> c'est une relation d'inclusion générale qu'il veut: a est dans adcder, b et r y sont aussi, donc abr y est...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    hmm...

    je serais tenté par un algo récursif sur ce coup là. Mais bon c'est probablement pas le plus simple

    En clair la réponse de Nemerle est proabalement ce que tu peux faire de mieux :
    l=longueur de X (en otant les doublons si tu veux, ou pas)
    i=0
    tu parcours Y: si le caractère c en cours est dans X alors tu incrémentes i.
    tu sors dès que i=l ou si tu as parcouru tout Y
    si i=l alors X est dans Y
    Bref :
    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
     
    Fonction Inclus (chaine, recherche) : boolean
    Variable
       i, j : entier
    Début fonction
       i=1
       j=1
       Tant que i<=longeur(chaine) et
                    j<=longueur(recherche) faire
          si chaine(i)=recherche(j) alors
             j=j+1
          fin si
          i=i+1
       fin tant que
       Inclus=j>longueur(recherche)
    Fin Fonction

  12. #12
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par rafuoner
    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
     
    Fonction Inclus (chaine, recherche) : boolean
    Variable
       i, j : entier
    Début fonction
       i=1
       j=1
       Tant que i<=longeur(chaine) et
                    j<=longueur(recherche) faire
          si chaine(i)=recherche(j) alors
             j=j+1
          fin si
          i=i+1
       fin tant que
       Inclus=j>longueur(recherche)
    Fin Fonction
    ... oui mais :
    1. quand i change, il faut remettre j à 1.
    2. si une des deux chaînes contient une lettre en double, cette méthode n'est plus bonne.

  13. #13
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Voilà le pseudo-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
    16
    17
    18
    19
    20
    21
    22
    lx = longueur X
    ly = longueur Y
     
    Si lx > ly
         alors X n'appartient pas à Y
    Sinon
         N = 0
         pour i = 1 à lx
              pour j = 1 à ly
                   si X[i] = Y[j]
                       N = N + 1
                       Sortie de pour
                   fin si
              fin pour
         fin pour
     
         Si N = lx
               X appartient à Y
         Sinon
               X n'apparient pas à Y
         Fin si
    Fin Si
    "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 éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    C'est bon LA? On peut tagger RESOLU ??
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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