Fonction sous_mot

black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
svp j'ai fait la fonction sous_mot qui verifie si m2 est un sous mot de m1 jarrive po a trouver l'erreur:
int sous_mot(char m1[30];char m2[30]);
{ int l1,l2,i,j,sm=0,k; char c;
l1=strlen(m1); l2=strlen(m2);
if (l2=>l1) sm=0;
else
{c=m2[0];
for(i=0;i<l1;i++)
{
if(m1[i]==c)
{
k=i; for(i=k,j=0;i<l1,j<l2;i++;j++)
{
if(m1[i]==m2[j]) sm=1;else break;
}
}
else continue;
}
}}
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Au lieu de int sous_mot(char m1[30];char m2[30]);
tu peux mettre : int sous_mot(char m1[30],char m2[30])
=> J'ai enlevé le ; entre les deux arguments ET le ; de fin de ligne.


if (l2=>l1)
C'est >= et non =>

for(i=k,j=0;i<l1,j<l2;i++;j++)
Il faut mettre une , entre i++ et j++ => i++,j++

Ta fonction est censée retournée un int. Il faut donc mettre un return dedans...

Cdlt,
2
black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
merci :D c fait il reste un seul msg d'erreur:error:invalid suffix "o" on integer constant et il est signalé dans la main
int main()
{char ch1[30],ch2[30],int x;
.........
0
black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
svp si klk un peut proposer une autre solution qu'il le fasse et merci encore
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
char ch1[30],ch2[30],int x;
Mets un ; entre le ch2[30] et le int x; au lieu de la virgule.

D'ailleurs, il faut éviter de tout mettre sur une ligne. Mets plutôt une déclaration par type par ligne :
char ch1[30], ch2[30];
int x;

C'est plus clair.
0
black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
c'est la meme chose le msg d'erreur est tjr la
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Peux-tu reposter ton code avec les modifications, en le mettant entre deux balises "code" (à droite du bouton "souligné") et en l'indentant ?
0
evifalcon
 
je suis pas sur,
mais je pense que ton erreur vient de
int sous_mot(char m1[30];char m2[30]);

les char sont des tableaux, et là tu n'envois que la 30e case de ton tableau.

Tu devrais travail avec des pointeurs, ou envoyer m1[0] et m2[0], qui sont les 1er cases!
0
Utilisateur anonyme
 
peu être qu'éviter de mettre un ';' entre deux paramètres serai pas mal aussi, et indiquer une taille de tableau et non un élément :

au lieu de


int sous_mot(char m1[30];char m2[30]);

mettre :


int sous_mot(char [30] m1,char [30] m2);



ou, comme tu le suggère :



int sous_mot(char * m1,char * m2);

naga
0
black light Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
merci j'avais po fait attention à ça mais il y-a tjr des msg d'erreur:
error:invalid suffix "o" on integer constant
error:expected identifier or '(' before '{' token
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
@evifalcon
int sous_mot(char m1[30];char m2[30]);
les char sont des tableaux, et là tu n'envois que la 30e case de ton tableau.


Non les char ne sont pas des tableaux. Ce sont des chars. Et si tu écris char m1[30] tu n'envoies pas le 30ème (31ème serait plus juste d'ailleurs) caractère. Tu envoies un pointeur sur le 1er élément. D'où l'écriture identique : int sous_mot(char *m1, ...)
L'erreur ici est surtout le ";" pour séparer les paramètres. Ainsi qu'en fin de lignes.

@nagashima
int sous_mot(char [30] m1,char [30] m2);
T'es sûr de ton coup ? J'ai jamais vu cette syntaxe...
0
Utilisateur anonyme
 
@nagashima 
int sous_mot(char [30] m1,char [30] m2);
T'es sûr de ton coup ? J'ai jamais vu cette syntaxe...

je n'en suis pas certain, à tester, mais il me semble qu'on a la possibilitée dans le sens ou ca permet de determiner un taille fixe de chaine. Je test ca et je te redis
0
Utilisateur anonyme
 
donc non la syntaxe qu'il utilisait était bonne :


char* test(char a [30], char b [30])
{
char* r = new char[60];
for(int i = 0; i < 30 ; i++)
{
r[i] = a[i];
r[59-i] = b[i];
}
return r;

}


int main(int argc, char** argv) {
printf("%s",test("azertyuiopmlkjhgfdsqwxcvbnmpol","123456789012365478963589621478"));
system("PAUSE");
return 0;
}
0