[Débutant] Détection si une chaine de caractères est un palindrome
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:
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.