Probleme execution programme basique

Aliano -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai fait un programme demandant à un utilisateur de rentré une chaine de caractère et le programme dit si c'est un palindrome, mais il me répond systématiquement que ce n'est pas un palindrome.

Voici mon code:
int main()
{
char chaine[80];
int i;
printf("entrez une chaine :");fgets(chaine,80,stdin);
fputs(chaine,stdout);
int nb=0;
for(i=0;i<80 && nb==0;i++){
if(chaine[i]=='\0'){
nb=i-1;
}
}
int palin;

palin=1;
for(i=0;i<=nb/2 && palin;i++){
palin=0;
if(chaine[i]!=chaine[nb-i]){
palin=1;
}
}
if(palin==1){
printf("la chaine rentre est un palindrome '\0");
}
else{
printf("la chaine rentre n'est pas un palindrome '\0");
}
printf("%d",nb);
return 0;
}

2 réponses

watou Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour,

Ton problème est dans la boucle :

palin=1;
for(i=0;i<=nb/2 && palin;i++){
palin=0;
if(chaine[i]!=chaine[nb-i]){
palin=1;
}
}

normalement dès que tu détectes une différence tu sors de la boucle !
et en plus tu initialises "palin" une seule fois au début !
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
En plus du problème signalé par watou, il ne faut pas oublier que fgets stocle (s'il a la place le '\n'. Il fait donc en tenir compte lors du calcul de nb.
0