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
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
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.
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.
Dans tous les cas, la solution la plus simple consiste à utiliser la classe std::string et sa fonction membre find().
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
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:
Ce petit programme va donner comme résultat:
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; }
J'espère que ça pourra t'aider.pos = 20
pos = 33
fini
Partager