pipo20005
Messages postés6Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention20 juillet 2005 11 févr. 2005 à 23:47
bon debut, ne t'enfait pas
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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és1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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és1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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
27 nov. 2015 à 23:15
11 févr. 2005 à 23:47
1 févr. 2005 à 08:58
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;
}
1 févr. 2005 à 08:38
attd...
confirmé
si on ve qu'il retourne 2,
il faut faire:
avec le dernier nb++
: i+=test.m_iTaille-2;
1 févr. 2005 à 08:29
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
31 janv. 2005 à 17:26
"babababa"
et qu'on cherche
"baba"
est-ce qu'il retourne 2, ou 3 ?
31 janv. 2005 à 09:45
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.