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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
char* con(char mot[] , char Mot[] );
char* mir(char mot[]);
int main()
{
char A[N] ;
printf("Saisir un mot : ");
fgets(A,N,stdin);
A[strlen(A)-1] = '\0' ; //supprimer le '\n'
printf("%s", mir(A) ) ;
getch();
return(0);
}
char* con(char mot[] , char Mot[] )
{
int i , j , m = strlen(mot) , n = strlen(Mot) ;
for(i=0 ; i < n+1 ; i++)
mot[ m + i ] = Mot[i] ;
return mot ;
}
char* mir(char mot[])
{
int i , j , 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];
return con(mir(tab2),mir(tab1)); // la recursivité
}
else
return mot ;
} |
Partager