Bonjour,
je voudrai savoir comment faire un programme pour que celui-ci dise si la phrase entrée est un palyndrome (qui se lit dans les deux sens).
merci d'avance!
Bonjour,
je voudrai savoir comment faire un programme pour que celui-ci dise si la phrase entrée est un palyndrome (qui se lit dans les deux sens).
merci d'avance!
Il faut déjà que tu fasses connaitre des phrases à ton programme pour qu'ensuite il puisse trouver un palyndrome lorsque tu entres une phrase !
Bon courage !
Le principe serait que mon programme enlève les espaces de la phrase ou bien que lorsque le programme rencontre un espace, qu'il s'incrémente une seconde fois.
Le principe serait que mon programme enlève les espaces de la phrase ou bien que lorsque le programme rencontre un espace, qu'il s'incrémente une seconde fois.
Suis-je clair?
A mon avis, le plus gros problème ce n'est pas les espaces....
c'est le stockage des phrases que tu devras effectuer préalablement !
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int palindrome(char chaine[], int debut, int fin);
main()
{
char phrase[100];
int i = 0, est_palindrome;
printf("Entrez la phrase a tester :\n");
while ((phrase[i++]=getchar()) != '\n');
phrase[--i]='\0';
/*appel de la fonction récursive */
est_palindrome=palindrome(phrase,0,i-1);
if (est_palindrome)
printf("C'est un palindrome");
else
printf("Ce n'est pas un palindrome\n\n");
system("PAUSE");
}
int palindrome(char phr[], int debut, int fin)
{
static int compteur=0;
/*on retire les espaces */
while(phr[debut]==' ')
debut++;
while(phr[fin]==' ')
fin--;
printf("essai=%d ", ++compteur);
printf("debut=%d '%c' ", debut, phr[debut]);
printf("fin=%d '%c'\n", fin, phr[fin]);
if (debut>=fin)
return 1;
else if(phr[debut] != phr[fin])
return 0;
else
return palindrome(phr, debut+1, fin-1);
}