RECHERCHE DE MOTIF DANS UN TEXTE

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 31 janv. 2005 à 09:45
 s1lv0 - 27 nov. 2015 à 23:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29195-recherche-de-motif-dans-un-texte

merci pour votre publication
pipo20005 Messages postés 6 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 20 juillet 2005
11 févr. 2005 à 23:47
bon debut, ne t'enfait pas
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
1 févr. 2005 à 08:58
i+=l-1 plutot

dc ce qui donne



int BString::getNbOccurence(const BString& test,const bool distinct)const
{
/// ----------------------------------------------------------------------------------------------------------
/// ---------------- BString::getNbOccurence(const BString& test ,const bool distinct) -> int ----------------
/// ----------------------------------------------------------------------------------------------------------
/// ----- Objectif : compte le nombre d'occurence d'une chaîne dans celle de la classe
/// ----- Auteur(s) : Magic_Nono 28/08/03
/// ----- PreCond : test.getLenght>0
/// ----- PostCond : /
/// ----- Etat : 2 (-1<0<1<2)
/// ----- MaJ 05/07/04 : accélération
/// ----- MaJ 01/02/05 : distinct - Magic_Nono sur suggestion de Kirua
/// ----------------------------------------------------------------------------------------------------------
/// ----- const BString& test : la chaîne recherchée
/// ----- const bool distinct(par défaut : 'false') : compter uniquement les éléments distincts
/// ----------------------------------------------------------------------------------------------------------
/// ----- retour (int) : cf.objectif
/// ----------------------------------------------------------------------------------------------------------
/// ----- Var Utilisées de la classe (2) : m_iTaille ,m_str
/// ----- Var Muettes (cf.partie préc) (2) : distinct ,test
/// ----- Var Internes à la fonction (5) : i ,l ,nb ,plomp ,separateur
/// ----- Var Utilisées par adresse (2) : m_str ,test
/// ----- Var In (4) : distinct ,m_iTaille ,m_str ,test
if(test.m_iTaille>m_iTaille)
return 0;
if(test.m_iTaille==1)
{
char separateur;
separateur=test.m_str[0];
size_t i;
int nb=0;
for(i=0;i<getLength();i++)
if(m_str[i]==separateur)
nb++;
return nb;
}
size_t i,l=test.m_iTaille;
int nb=0;
BString plomp;
for(i=0;i<(m_iTaille-l+1);i++)
{
plomp=deA(i,i+l-1);
if(plomp==test)
{
nb++;
if(distinct)
i+=l-1;
}
}
return nb;
}
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
1 févr. 2005 à 08:38
a , pr ma fonction, ben il retourne 3


attd...

confirmé

si on ve qu'il retourne 2,
il faut faire:
avec le dernier nb++
: i+=test.m_iTaille-2;
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
1 févr. 2005 à 08:29
il a l'air d'avancer comme le montre les

i = i + 1;
j = j + 1;
}
k = k + 1;

de son prog

i++;
j++;
k++;

a propos,
point de vu optimisation, la derniere écriture est largement préférable

++
B
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
31 janv. 2005 à 17:26
Si la phrase est:

"babababa"

et qu'on cherche

"baba"

est-ce qu'il retourne 2, ou 3 ?
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
31 janv. 2005 à 09:45
Bj

sans vouloir vexer, initié me semble un peu excecif pour la production d'une fonction C non générique
avec variable globales
écrite de maniere non optimisée.

la mm extraite d'une lib C++ produite ds ces pages:

int BString::getNbOccurence(const BString test)const
{
/// ------------------------------------------------------------------------------------
/// ---------------- BString::getNbOccurence(const BString test) -> int ----------------
/// ------------------------------------------------------------------------------------
/// ----- Objectif : compte le nombre d'occurence d'une chaîne dans celle de la classe
/// ----- Auteur(s) : Magic_Nono 28/08/03
/// ----- PreCond : test.getLenght>0
/// ----- PostCond : /
/// ----- Etat : 2 (-1<0<1<2)
/// ------------------------------------------------------------------------------------
/// ----- const BString test : la chaîne recherchée
/// ------------------------------------------------------------------------------------
/// ----- retour (int) : cf.obj
/// ------------------------------------------------------------------------------------
/// ----- Var Utilisées de la classe (2) : m_iTaille ,m_str
/// ----- Var Muettes (cf.partie préc) (1) : test
/// ----- Var Internes à la fonction (5) : i ,l ,nb ,plomp ,separateur
/// ----- Var Utilisées par adresse (2) : m_str ,test
/// ----- Var In (3) : m_iTaille ,m_str ,test
if(test.m_iTaille>m_iTaille)
return 0;
if(test.m_iTaille==1)
{
char separateur;
separateur=test.m_str[0];
size_t i;
int nb=0;
for(i=0;i<getLength();i++)
if(m_str[i]==separateur)
nb++;
return nb;
}
size_t i,l=test.m_iTaille;
int nb=0;
BString plomp;
for(i=0;i<(m_iTaille-l+1);i++)
{
plomp=deA(i,i+l-1);
if(plomp==test)
nb++;
}
return nb;
}

si tu produit des choses gnou, essaie des trucs un peux plus sioux

Allez, sans rancune
++

Nono.
Rejoignez-nous