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 :

une fonction rechercher char *


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut une fonction rechercher char *
    bien le bonjour a vous
    j'essay de faire une fonction qui recherche une sous chain sur une autre et voila mon debile algo qui ne marche pas


    j'ai besoin de vos lumieres SVP

    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
     
    char *ZString::rechercher(char *str)
    {
     
     
     int i=0 , j=0 ;
     int taille=longueur(str) ;
     char *mot=new char[taille +1] ;
     
     while(m_chaine[i] != '\0'){
     while(str[j] != '\0'){
         if(m_chaine[i] == str[j] && m_chaine[i+1]==str[j+1]){
         mot[j]=str[j] ;
         mot[j+1]=str[j+1] ;
         if(j==taille)
         j=0 ;
         else
         j++ ;
         }
       }
     i++;
    }
     
    return mot;
    }
    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <cstring>
     
    char *ZString::rechercher(char *str)
    {
       return strstr(m_chaine, str);
    }
    Si tu veux le détail de strstr():

    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
     
    char * strstr (const char * str1, const char * str2)
    {
      char *cp = (char *) str1;
      char *s1, *s2;
     
      if (!*str2)
        return (char *) str1;
     
      while (*cp)
      {
        s1 = cp;
        s2 = (char *) str2;
     
        while (*s1 && *s2 && !(*s1 - *s2))
          s1++, s2++;
     
        if (!*s2)
          return cp;
     
        cp++;
      }
     
      return (NULL);
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Bonjour

    Citation Envoyé par XsaiddX Voir le message
    j'ai besoin de vos lumieres SVP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *ZString::rechercher(char *str)
    Si tu veux être sûr de ne pas modifier le parametre passé à la mthode (str), je rajouterai const :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *ZString::rechercher(const char *str)
    Pour la suite, cela manque de commentaires...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       int i=0 , j=0 ;
       int taille=longueur(str) ;
       char *mot=new char[taille +1] ;
    Alors la, attention : tu alloues un buffer que tu ne libères jamais. Cela signifie t il que l'utilisateur de ta class ZString doivent faire un delete[] apres appel à ta méthode ? Cela ne me parait pas idéal, voire gênant.

    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
       while(m_chaine[i] != '\0') {
          while(str[j] != '\0') {
             if(m_chaine[i] == str[j] && m_chaine[i+1]==str[j+1]) {
                mot[j]=str[j] ;
                mot[j+1]=str[j+1] ;
                if(j==taille)
                   j=0 ;
                else
                   j++ ;
             }
          }
          i++;
       }
       return mot;
    }
    La tu compliques, décris d'abord l'algo que tu souhaites mettre en place, ou, plus judicieusement, utilises strstr qui est une fonction standard qui fait ce que tu recherches (pas la peine de la re-developper, il suffit juste d'inclure <cstring>).
    --
    Jérémie

  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
    Pourquoi retournes-tu une copie de la sous-chaîne quand elle est trouvée? Ne serait-il pas plus judicieux de retourner un index dans la chaîne existante?

    PS: Le pointeur str ne devrait-il pas être const?
    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 averti
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut
    j'ai deja trouve une solu merci pour votre aide

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

Discussions similaires

  1. [PHP-JS] Mise en place d'une fonction recherche
    Par barbapapa2 dans le forum Langage
    Réponses: 6
    Dernier message: 02/12/2006, 19h03
  2. Réponses: 2
    Dernier message: 16/11/2006, 15h00
  3. Intégrer une fonction recherche sur un site
    Par tomowok dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 12/04/2006, 19h33
  4. Créer une Fonction recherche sur Access
    Par remwideco dans le forum Access
    Réponses: 4
    Dernier message: 30/01/2006, 10h36
  5. Réponses: 3
    Dernier message: 15/11/2005, 18h50

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