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 :
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 ;
 
}
mais à l'execution il y a ce probléme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Saisir un mot : abcd

dcdcdعّ|°2ْ|↑
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 : wxc

cxw