Comparer des suites de caracteres

alexey27 Messages postés 18 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 11 janvier 2009 - 11 janv. 2009 à 15:34
lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009 - 12 janv. 2009 à 09:11
Bonjour je dois realiser un programme qui demande a l'utilisateur d'entrer une ligne de caracteres. Le programme devra lire les données entrées par l'utilisateur (jusqu'a 'n)'.
Si l'utilisateur entre aabc(espace)xxaabc(espace) xxaabcxx(entrer).
Le programme devra comparer chaque suite de caracteres et verifier si elle est contenu dans celle d'apres.
Par exemple si "aabc" est contenu dans "xxaabc" puis si "xxaabc" est contenu dans " xxaabcxx" jusqu'a la fin de la ligne.
Je ne sais pas du tout comment m'y prendre pour comparer chaque suites de caracteres . J'ai pensé a definir deux tableau deux types string et les comparer....
Si quelqu'un a une idée?
Merci d'avance.

3 réponses

lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009
11 janv. 2009 à 16:46
bonjour,
je n'ai pas très bien compris si tu doit rechercher le mot juste dans le mot suivant ou dans tout les mots suivant c'est pour cela que je te propose deux solutions, sinon dans les deux cas 1 seul tableau de string et suffisant.

voila mes propositions:

1ére solution, pour la recherche dans le mot suivant seulement:
tu parcours ton tableau de string du 1er élément à l'avant dernier (via une boucle for), et tu recherche dans l'élément suivant du tableau si tu trouve l'élément actuelle (via la fonction find de la classe string)

2éme solution, pour la recherche dans tout les mots suivant:
tu parcours ton tableau de string du 1er élément à l'avant dernier (via une boucle for), ensuite via une seconde boucle for imbriqué dans la 1ére tu parcours ton tableau de l'élément suivant au dernier et tu regarde si tu trouve l'élément actuelle de la 1ére boucle dans l'élément actuelle de la seconde boucle.

j'espère être clair.
0
alexey27 Messages postés 18 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 11 janvier 2009 1
11 janv. 2009 à 17:00
Merci pour ton post  !
En fait je dois comparer le 1er element avec le second puis le second avec le troisieme ainsi de suite jusqu'a la fin de la ligne.
Le probleme est que j'ai raté le cours sur les chaines de caracteres :( et je ne sais pas du tout comment m'y prendre en fait. Lorsque l'utilisateur entre sa suite de mots , je dois determiner apparement deux tableau de string dans lesquels j'insere les deux premiers mots je verifie si le premier mot est contenu dans le second puis ainsi de suite...
Pour l'exemple que j'ai donné ci dessus :
aabc(espace)xxaabc(espace) xxaabcxx(entrer).
Le programme devra dans un premier temps comparer aabc et xxaabc (1er avec le second) 
Puis xxaabc et xxaabcxx  (le 2nd avec le 3eme)
0
lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009
12 janv. 2009 à 09:11
je te propose une solution possible pour la réalisation de ton programme. Sinon je ne peut que te conseiller de rattraper ton cours sur les string car c une classe très pratique pour la gestion des chaines de caractères.

<hr size="2" width="100%" />#include

using namespace std;

int main(void)
{
    string s1, s2;
    
    // récupération du 1er mots
    cin >> s1;
    
    // tant que l'on a pas atteind le caractère de fin de ligne
    while(cin.peek() != '\n')
    {
        // récupération du mots suivant
        cin >> s2;
        // cherche dans s2 si il y a s1
        if(s2.find(s1))
            cout << "il y a "" << s1 << "" dans "" << s2 << """ << endl;
        
        s1 = s2;
    }
    return 0;
}
0
Rejoignez-nous