Bonjour,

je cherche à réaliser un script qui détermine si une chaine est un palindrome, c'est à dire sysmétrique, qui peut se lire de la même façon de gauche à droite ou de droite à gauche. Par exemple, ana, non, rever...

Voici 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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int palindrome(char *s, int debut, int fin)
{
  if (fin-debut==0)
    return 1;
  if (s[debut]==s[fin]) 
     palindrome(s, debut+1, fin-1);
  else return 0;
}
 
int main()
{
  char *s;
  int debut=0;
  int fin=2;
  //int lon=strlen(s);
 
  printf("chaine à verifier :");
  scanf("%s",&s);
 
  //printf("chaine :%s",&s);
  //printf("longueur :%d",&fin);
 
  if(palindrome(s,debut,fin))
    printf("c'est un palindrome\n");
  else
    printf("ce n'est pas un palindrome\n");
 
  system("pause");
 
  return EXIT_SUCCESS;
}
je rencontre plusieurs problémes:

- impossible de récupérer correctement la longueur de ma chaine de caractères, c'est pourquoi fin est initialisé à 3 (test de chaines de 3 caractères)

- lorsque je rentre une chaine de 3 caractères qui est un palindrome certaines fois le programme le détecte, d'autres fois non...
Là je ne comprends pas vraiment ce qui se passe...

- Lorsque que la chaine n'est pas un palondrome le programme quitte sans passer par l'affichage qui est prévu dans ce cas

Je suis débutant et après pas mal de temps à essayer de résoudre ces problèmes, j'ai besoin de quelques éclaircissements.

Merci pour vos réponses.