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 :

Trouver dans un texte les séquences répétées


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut Trouver dans un texte les séquences répétées
    Bonjour,
    Je souhaite répertorier toutes les séquences répétées (de longueurs variables) dans un texte donné. Comment dois-je m'y prendre ?

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Moi à ta place je ferais un tableau de chaines de caractère avec std::vector et std::string.

    Je lui affecterais mes séquences une par une en effectuant des test pour détecter les doublons.

    Le programme pourrait écrire les informations sur les séquences répétées dans un fichier texte avec std::fstream.

    Il pourrais aussi faire une copie du fichier d'origine sans les doublons ou même, afficher les parties redondantes et demander à l'utilisateur quoi faire avec.

    Sa dépend de ton but.

    J'espère t'avoir été utile.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Tu cherches des occurences de mots (séparés par des espaces) ou des séquences quelconques? Dans le premier cas c'est assez trivial avec une simple itération sur le texte, par contre le second cas peut s'avérer plus délicat.

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par défaut
    Dans tous les cas, la solution la plus simple consiste à utiliser la classe std::string et sa fonction membre find().

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    Merci pour vos réponses


    Je souhaite créer un décrypteur du chiffre de Vigenère.
    Donc ce sont des séquences quelconques. http://www.apprendre-en-ligne.net/cr...decodevig.html

    Concrètement, comme le faire avec std::string. Car elle peut être aléatoire et de longueur elle aussi aléatoire.


    Merci d'avance

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par défaut
    Je ne comprends pas le décrypteur de Vigène, mais voici un exemple d'utilisation de la fonctino membre find de la classe string:

    Code c++ : 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
    #include <iostream>
    #include <string>
     
    int main()
    {
    	std::string str = "ceci est une chaine de caractere de test";
    	size_t pos = str.find( "de" ); // on trouve la premiere occurrence de "de"
    	while ( pos != std::string::npos ) // tant que l'on a pas atteint la fin de la chaine de test
    	{
    		std::cout << "pos = " << pos << std::endl; // on affiche la position du "de" trouvé
    		pos = str.find( "de", pos+1 ); // on cherche la prochaine occurrence de "de" à partir de la dernière occurrence trouvée
    	}
     
    	// end
    	std::cout << std::endl << "fini" << std::endl;
    	std::cin.get();
    	return 0;
    }
    Ce petit programme va donner comme résultat:
    pos = 20
    pos = 33

    fini
    J'espère que ça pourra t'aider.

Discussions similaires

  1. Réponses: 22
    Dernier message: 28/08/2011, 23h12
  2. Réponses: 1
    Dernier message: 16/12/2009, 22h22
  3. Supprimer dans un texte les parties entre parenthèses
    Par didideder dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2009, 11h11
  4. Trouver dans un texte les séquences répétées
    Par Amybond dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 14/03/2009, 13h58
  5. [RegEx] Trouver toutes les dates dans un texte
    Par Shandler dans le forum Langage
    Réponses: 7
    Dernier message: 16/04/2008, 09h56

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