bonjour à tous,
voilà j'ai un petit probléme, je fait un test sur 2 chaines de caractère, une que j'apelle texte, l'autre motif, je doit donc rechercher si le motif apparait dans le texte.
Le probléme c'est que ma boucle s'arréte dés qu'elle rencontre le premier caractère de mon motif par exemple si mon texte est "bbcb" et mon motif "ca", ma méthode me dira que le motif apparait bien dans le texte a la position 3 alors que théoriquement le motif ne devrai pas y étre. J'ai mis des System.out.println pour controlerle déroulement de la boucle,mais "fin" me renvoi toujours false alors qu'il devrait etre true pour que la boucle s'arréte.J'arrive pas à voir ou est le problème, qu'en je developpe l'algo à la main ca va, mais un truc doit m'échapper. Merci de votre aide
public/*@pure@*/ int naive(){
k = -1;
j = -1;
fin = false;
trouve = false;
while (!fin && !trouve){
fin = (k == (longTexte(texte)-1) && j == longMotif(motif)-1 );
if (!fin){
if(j == longMotif(motif)-1 ){
j=0;
k=k+1;
trouve=compare(k,j);
System.out.println("tj"+k);
System.out.println("tt"+lm);
}//if
else{
k=k+1; j=j+1;
trouve=compare(k,j);
System.out.println("uu"+k);
System.out.println("ti"+j);
System.out.println("fin "+fin);
System.out.println("trouve "+trouve);
}//else
}//if
}//while
if (trouve == true ){
//la position du motif est k+1, on compte à partir de 1.
pos = k + 1;
System.out.println("le motif se trouve dans le texte à la position "+pos);
}//if
else{
System.out.println("le motif ne se trouve pas dans le texte.");
}//else
return k;
}//naive
public boolean compare (int l, int m){
identik = ( texte.charAt(l) == motif.charAt(m));
//if (identik == false) j=-1;
return identik;
}
TRUST IS A WEAKNESS