dans un programme que j'ai fait, je dois écrire les fonctions member et efface : member doit vérifier qu'un mot appartient à une chaine de caractère et efface doit effacer le mot de la chaine.
Problème, ca plante pendant l'exécution, mais je vois pas le problème avec ce petit algo...
Les fonctions suivantes ont déjà été écrite et elle marche :
premier : renvoie le premier mot d'une chaine de car (on travaille avec des chaine de caractères formatées et les mot sont séparés au sein de la chaine par un espace)
saufpremier : renvoie la chaine initiale privée du 1er mot.
egal : vérifie si les 2 chaines sont identiques
vide : teste si la chaine est vide.
A priori l'erreur viendrait de efface, mais je vois pas ou, pourtant c'est simple....
int Member(char * m, char *ch)
{
if (vide(m)) return 1;
else if (vide(ch)) return 0;
else if (egal(m,Premier(ch))) return 1;
else return Member(m,SaufPremier(ch));
}
char *Efface(char *m, char *ch)
{
if (vide(ch)) return ch;
else if (Member(m,ch))
{
if ( egal(m,Premier(ch)) ) return Efface(m,SaufPremier(ch));
else return Phrase(Premier(ch),Efface(m,SaufPremier(ch)));
}
else return ch;
}