[C] répeter le programme
Fermé
rose77
-
22 mai 2005 à 21:15
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 23 mai 2005 à 08:44
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 23 mai 2005 à 08:44
A voir également:
- [C] répeter le programme
- Programme demarrage windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Ce message d'erreur apparaît sur l'ordinateur d'elena. que peut-on dire du programme gwxux ? - Forum logiciel systeme
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
6 réponses
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
22 mai 2005 à 21:38
22 mai 2005 à 21:38
Salut
L'idée est bonne, mais il faut faire la saisie dans le main().
Ensuite ta fonction recherche toi tenir compte des facteurs suivants :
- le mot recherché peut être le dernier -> pas de suivant
- le mot suivant est le dernier (test de fin de recherche)
- le mot recherché n'est pas trouvé
T'es pas obligé de faire de la recursivité. Utilise un prototype du type :
Attention, recherches_suivant() doit copier le mot suivant dans la chaine
'suivant', pas faire jou-jou avec les pointeurs.
L'idée est bonne, mais il faut faire la saisie dans le main().
Ensuite ta fonction recherche toi tenir compte des facteurs suivants :
- le mot recherché peut être le dernier -> pas de suivant
- le mot suivant est le dernier (test de fin de recherche)
- le mot recherché n'est pas trouvé
T'es pas obligé de faire de la recursivité. Utilise un prototype du type :
/* ** Fonction qui recherche 'mot' dans 'phrase' et retourne le mot 'suivant' ** retourne ** 0: le mot est le dernier ** 1: tout est ok ** -1: le mot n'a pas été trouvé */ int recherche_suivant( char* phrase, char* mot, char* suivant ) Au niveau de l'appel : char phrase[...], mot[...], suivant[...] ; int ret, i ; /* faire les saisies */ for( i=0; i<nombre_de_boucle_a_faire, i++) { ret = recherche_suivant( phrase, mot, suivant ) ; /* faire les tests de retour et arrêter si nécessaire */ strcpy( mot, suivant ) ; }
Attention, recherches_suivant() doit copier le mot suivant dans la chaine
'suivant', pas faire jou-jou avec les pointeurs.
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
22 mai 2005 à 21:38
22 mai 2005 à 21:38
salut
déjà il faudrait 2 scanf, un pour saisir le texte, et un pour saisir le mot.
ensuite pour la position du mot, je peux me tromper mais ça doit être
i-l
cordialement
déjà il faudrait 2 scanf, un pour saisir le texte, et un pour saisir le mot.
ensuite pour la position du mot, je peux me tromper mais ça doit être
i-l
cordialement
je vous remercie
pour les scanf je les ai remplacé par gets.
Mais, Crabs j'essaie avec des exemples tres simple, je voudrais repeter la boucle tant que str1[i]!='\0' (le teste n'est pas encore terminé).
Est ce possible?
car je ne sais vraiment pas comment appliquer ton protype, dans la boucle for comment connaitre le nbr de boucles à faire?
merci
pour les scanf je les ai remplacé par gets.
Mais, Crabs j'essaie avec des exemples tres simple, je voudrais repeter la boucle tant que str1[i]!='\0' (le teste n'est pas encore terminé).
Est ce possible?
car je ne sais vraiment pas comment appliquer ton protype, dans la boucle for comment connaitre le nbr de boucles à faire?
merci
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
506
22 mai 2005 à 22:04
22 mai 2005 à 22:04
Salut,
La fin d'un mot ça peut être effectivement l'espace ou la fin de chaine.
Si c'est possible, y a un opérateur 'OU' en C : ||
gets() remplace '\n' de fin de saisie, par '\0'
Pour le nombre de boucle, ça c'est toi qui voit, tu dit que tu dois le faire une
fois, puis que tu dois le refaire avec le mot suivant qui devient le mot à
rechercher (2 boucles)
La fin d'un mot ça peut être effectivement l'espace ou la fin de chaine.
Si c'est possible, y a un opérateur 'OU' en C : ||
gets() remplace '\n' de fin de saisie, par '\0'
Pour le nombre de boucle, ça c'est toi qui voit, tu dit que tu dois le faire une
fois, puis que tu dois le refaire avec le mot suivant qui devient le mot à
rechercher (2 boucles)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blurk
Messages postés
486
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
160
23 mai 2005 à 08:44
23 mai 2005 à 08:44
J'ai retrouvé ça dans mes archives
Attention, il va y avoir une petite modification pour que ça fasse ce que tu as demandé.
A+
¤
Attention, il va y avoir une petite modification pour que ça fasse ce que tu as demandé.
A+
//--------------------------------------------------------------------------- // retourne l'index de chaine ou a ete trouve la souschaine int __fastcall trouve_mot_avant(char *avantquoi,char *chaine) { int len=strlen(chaine),lenmot=strlen(avantquoi); int i; char * tampon=(char *)malloc(lenmot); bool found=false; for ( i=0;i<(len-lenmot) && !found;++i) { strncpy(tampon,chaine+i,lenmot); tampon[lenmot]=0; if(!strcmp(avantquoi,tampon))found=true; } free(tampon); return i; }--
¤