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 :

Recherche dans un tableau find()


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut Recherche dans un tableau find()
    Bonjour a tous,

    Voila j'ai un tableau de string, contenant des numéros de ports.

    Je cherche a prendre a chaque numéro, et à rechercher si ce numéro existe déja dans mon tableau, car les numéros de ports qui reviennent.

    J'utilise la fonction find() mais cela ne fonctionne pas .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     AnsiString bj = TabPort[y].c_str();
                    if(bj !=' ')
                    {
                            IndexPort = find(TabPort[256].begin(),TabPort[256].end(),bj);
                            if(IndexPort)
                            {
                                    cout<<"trouver";
                            }
                            else
                            {
                                    cout<<"Non trouver";
                            }

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    RTFM

    http://www.cplusplus.com/reference/algorithm/find/

    find ne renvois pas un booléen.

    find renvois : un itérateur sur l'élément trouvé ou un itérateur sur le dernier élément + 1 (= end() )

    Tu dois donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(IndexPort != TabPort[256].end() )
              //trouvé
    else
               //non trouvé
    Ici TabPort n'est pas un conteneur donc tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(IndexPort != TabPort+256 )
              //trouvé
    else
               //non trouvé

    Ensuite que veux-tu faire exactement? Ta méthode ne me semble pas très adaptée.

    Ensuite, je ne pense que tu veux chercher ta chaîne de caractère parmi l'ensemble des strings contenu dans ton tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IndexPort = find(TabPort,TabPort+256,bj);
    Et met bien comment tu défini les variables que tu utilises.
    TabPort est-il bien un tableau de string ou un vector de string?

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut
    En gros, je veux vérifier qu'un élement du tableau n'apparait qu'une fois dans le tableau.

    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
     
            int cpt = TabPort[256].size();
     
            for(int y=0;y<=cpt;y++)
            {
                    string::iterator IndexPort;
                    string::iterator Debut = TabPort[256].begin();
     
                    AnsiString bj = TabPort[y].c_str();
                    if(bj !=' ')
                    {
                            IndexPort = find(Debut,TabPort[256].end(),bj);
                            if(IndexPort!=TabPort[256].end())
                            {
                                    cout<<"trouver";
                            }
                            else
                            {
                                    cout<<"Non trouver";
                            }

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Vu avec lui sur le chat, gros problème de compréhension de ce qu'est un itérateur et algo pas correct
    En cours de correction

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Pour ceux qui poserait la même question, voici le code corrigé et compilable sur des données de test
    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
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
     
    using namespace std;
     
    int main()
    {
        const char* init[] =  { "1", "2", "3", "2", "4", "3" };
        vector<string> TabPort(init, init+6);
     
        vector<string>::iterator it;
     
        vector<string>::iterator start;
     
        start = TabPort.begin();
        for (it = TabPort.begin();it != TabPort.end();++it)
        {
            ++start;
            // itérateur faisant référence au string trouvé ou à end()
            vector<string>::iterator trouve;
     
            trouve = find (start, // on commence la recherche à partir de start
                           TabPort.end(), // on arrête à la fin du tableau
                           *it); // on cherche la string à laquelle fait référence it
     
            if (trouve != TabPort.end())
            {
                cout << *it << " trouvé:" << *trouve << endl;
            }
            else
            {
                cout << *it << " non trouvé:" << endl;
            }
        }
    }

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Si les éléments du tableau sont des nombres, c'est une hérésie de les stocker et de les rechercher sous forme de string.

    Utilie un std::set<unsigned int>.

Discussions similaires

  1. [Tableaux] recherche dans un TABLEAU
    Par dunbar dans le forum Langage
    Réponses: 3
    Dernier message: 15/08/2006, 00h06
  2. [VBA-E]Recherche dans un tableau
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 05/07/2006, 10h35
  3. Recherche dans un tableau
    Par Bes74 dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2006, 17h26
  4. [VBA-E] recherche dans un tableau
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 03/05/2006, 17h52
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

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