1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| char *con(char mot[],char Mot[]) {
int i, m=strlen(mot), n=strlen(Mot);
printf("con : %s(%p) + %s(%p) = ",mot,mot,Mot,Mot);
for(i=0;i<n;i++) {
mot[m+i] = Mot[i];
}
mot[m+i] = '\0';
printf("%s(%p)\n",mot,mot);
return mot;
}
char *mir(char mot[]) {
int i, m=strlen(mot);
char tab1[N], tab2[N];
if( m != 1 ) {// le test d'arret quand le mot contient un seul caractère
for (i=0;i<m/2;i++) {// je divise en deux voici la 1ér facteur
tab1[i]=mot[i];
}
tab1[i]='\0';
for (i=m/2;i<=m;i++) {// le 2ème
tab2[i-(m/2)]=mot[i];
}
printf("mir : %s(%p) = %s(%p) + %s(%p)\n",mot,mot,tab1,tab1,tab2,tab2);
return con(mir(tab2),mir(tab1)); // la recursivité
} else {
printf("mir : %s = %s(%p)\n",mot,mot,mot);
return mot;
}
} |