Probleme execution programme basique
Aliano
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 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;
}
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
-
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 !
-
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.