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 :

probleme recherche séquentiel


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut probleme recherche séquentiel
    Bonjour,

    je dois faire un ptit programme qui recherche des mots passé en parametre dans l'entrée standard.

    exemple :

    appel du prog : ./prog salut toi < test
    dans test :
    salut
    toi
    salut ca va et toi

    le prog dois m'afficher :
    salut
    toi
    salut ca va et toi

    les lignes a affciher doivent juste contenir les chaines cherchés

    voici une partie de mon code actuel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef vector<string>::iterator VIIt;
     
    int main(...)
    ...
    VIIt pos3 = v.begin();
     while(v.end() != (pos3 = std::find_first_of(pos3,v.end(),s,s + sizeof(s)/sizeof(*s)))){
                   cout << *pos3 << endl;
                    ++pos3;
     }
    s est un tableau qui contient les mots passés en parametre

    mais ca ne marche pas... j'ai un peu de mal avec les algos de recherche.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    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
    #include <string>
    #include <algorithm>
    #include <iostream>
     
    int main(int argc, char* argv[])
    {
        std::string line;
        while(std::getline(std::cin, line))
        {
            if(std::find_first_of(line.begin(), line.end(), argv+1, argv+argc) != line.end())
                std::cout << line << std::endl;
        }
    }
    Il s'agit d'un "ou".
    Je me serais plutôt attendu à un "et".

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par loufoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <string>
    #include <algorithm>
    #include <iostream>
     
    int main(int argc, char* argv[])
    {
        std::string line;
        while(std::getline(std::cin, line))
        {
            if(std::find_first_of(line.begin(), line.end(), argv+1, argv+argc) != line.end())
                std::cout << line << std::endl;
        }
    }
    Il s'agit d'un "ou".
    Je me serais plutôt attendu à un "et".
    Merci,Je ne pourrais tester que ce soir.

    J'ai mis comme titre recherche sequentiel car en faite je dois aussi faire un cas ou on doit rechercher dans l'entrée standard si on trouve "Exactement" la chaine passé en parametre

    Exemple:
    ./mon prog salut toi < test m'affiche
    salut
    toi

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ben justement, ce n'est pas "exactement".

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    en faite désolé mais j'avais pas bien compris le sujet du truc , faut dire que c'est pas tres bien expliqué.

    je met un exemple ca sera plus simple:

    ./mon prog we look < demo

    fichier demo:
    ligne 1 blla bla bla we bla bla
    ligne 2 bla bla bla lba
    ligne 3 bla bla we
    ligne 4 bla bla look
    ligne 5 bla bla look
    ligne 6 bla bla we
    ligne 7 bfdb look

    et ca doit afficher les lignes 3,4,6 et 7. Il faut que si on trouve we dans une premiere ligne si la ligne d'apres contient look alors on affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VIIt pos3 = v.begin();
    while(v.end() != (pos3 = std::find_first_of(pos3,v.end(),argv+1,argv +argc,contains))){
         cout << *pos3 << endl;
         ++pos3;
    }
    mais la ca m'affiche toutes les lignes qui contiennent soit we soit look...

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    bon ba j'ai trouvé pour ceux que ca interesserai ,faut utiliser la fonction search.

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

Discussions similaires

  1. Réponses: 54
    Dernier message: 09/03/2013, 15h27
  2. probleme recherche dans base de donnée
    Par 0kiss0 dans le forum ASP
    Réponses: 3
    Dernier message: 16/04/2007, 18h50
  3. Aide sur la recherche séquentielle
    Par beegees dans le forum Langage
    Réponses: 6
    Dernier message: 21/01/2007, 17h16
  4. probleme : recherche dichotomique
    Par M.a.n.u. dans le forum C
    Réponses: 3
    Dernier message: 17/06/2006, 23h30
  5. Souvent j'ai le probleme (recherche de carractere...)
    Par GESCOM2000 dans le forum Access
    Réponses: 7
    Dernier message: 21/01/2006, 20h13

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