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 -
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:
- Fonction sous_mot
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
2 réponses
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,
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,
je suis pas sur,
mais je pense que ton erreur vient de
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!
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!
@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...
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...
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;
}
int main()
{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.