salut les amis
je dois faire un programme qui lit un mot est affiche son miroir ("yous" -> "suoy") en utilisant l'algorithmes suivant :
en découpe le mot en 2 facteurs a et b alors le miroir de ab = la concatenation de 2 mots : le 1èr est le miroir de b le 2ème est le miroir de a
et cela de manière recursif . miroir(ab) = concatenation( miroir(b) , miroir(a) )
voila mon code :
mais à l'execution il y a ce probléme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
alors que quand je tape juste 3 caractere ça marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Saisir un mot : abcd dcdcdعّ|°2ْ|↑
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Saisir un mot : wxc cxw
Partager