Fonction en c

Résolu
nilly Messages postés 162 Statut Membre -  
nilly Messages postés 162 Statut Membre -
Bonjour,
je veux écrire ,en langage c,une fonction qui teste si un mot1 est un sous_mot d un mot2
on dit que a est un sous_mot de b si a peut etre obtenu a partir de b en supprimant un certain nombre de lettres de b,
exemple:
le mot abbba
possède les sous_mots suivants:
abbba /*en ne supprimant aucune lettre*/
abbb /*en supprimant une seule lettre*/
abba
bbba
abb /*en supprimant 2 lettre*/
aba
bba
bbb
aa /*en supprimant 3 lettre */
ab
ba
bb
a /*en supprimant 4 lettres*/
b
mot vide /*en supprimant toutes les lettres*/
A voir également:

9 réponses

nilly Messages postés 162 Statut Membre 5
 
alooooo
quelqu'un peut m aider SVP
0
tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
tu as la fonction strstr( char *chaine1 , char *chaine2 ) qui cherche si chaine2 est présente dans chaine1
cela devrait t'aller ?
0
nilly Messages postés 162 Statut Membre 5
 
justement mais le prof nous a demander de ne pas utiliser les fonctions de sritng.h
0
tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
et bien tu réécris la fonction strchr() ! (c'est pas bien dur !)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nilly Messages postés 162 Statut Membre 5
 
ok merci
0
nilly Messages postés 162 Statut Membre 5
 
le code source de cette fonction est trops compliqué
et j arrive pas a faire quelque chose de simple
0
tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
écoute c'est pas trop compliqué. Si tu n'y arrive pas, c'est peut être ambitieux de vouloir aller plus loin, désolé.
0
mamiemando Messages postés 34193 Date d'inscription   Statut Modérateur Dernière intervention   7 892
 
Avant de coder en C essaye de trouver le raisonnement en pseudo code. Concrètement tu as une chaîne (str) et tu cherches si une sous chaîne (motif) est contenue dedans. Concrètement une chaîne est juste un tableau de char terminée par le caractère spécial '\0'.

Dans ton cas il faut parcourir str jusqu'à trouver la première lettre de motif.
- Si tu la trouves il faut voir si la lettre suivante correspond bien à la 2nde lettre de motif.
- Sinon il faut repartir du début de motif et continuer à avancer dans str, dans l'espoir de trouver motif plus loin.
Il suffit ensuite d'appliquer ce raisonnement jusqu'à soit avoir atteint la fin de motif (auquel cas tu as bien prouvé que motif était contenu dans str) ou de str (auquel cas motif n'était pas présent dans le mot).

Le piège dans cette exercice c'est qu'à chaque fois que tu avances dans l'une des deux chaînes que tu ne dépasses pas le caractère de fin de chaîne.

Maintenant réfléchissons au type de ta fonction. Dans ton cas on retourne un booléen (si tu es en C et non en C++ met un int) et deux chaînes. Comme ces deux chaînes sont maintenues constantes par notre fonction on peut utiliser le type const char * au lieux de char *, ce qui est plus propre et plus générique.
bool est_sous_mot(const char *str,const char *motif);

A présent essaye de nous proposer le pseudo code correspondant à ta fonction, et une fois cette étape terminée on passera à l'implémentation.

Bonne chance
0
nilly Messages postés 162 Statut Membre 5
 
merci beaucoup de votre aide je vais essayé,
0