Programme palindrome fait pas ce qu'il faut

Résolu/Fermé
jakbauer222 Messages postés 15 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 13 mars 2017 - 12 déc. 2015 à 00:40
 Utilisateur anonyme - 12 déc. 2015 à 09:19
Salut mon programme ci-dessous se compile et s'execute sans soucis mais le truc c'est que il ne fonctionne pas comme il faut puisque il prend toute chaine de caractères saisi comme un palindrome.





#include <stdio.h>
#include <string.h>

int palindrome (char chaine [30])
{

int i,j;
int palindrome;
for (i = 0, j = strlen (chaine) - 1; i <= j; ++i, --j){


if (chaine[i] == chaine[j])
palindrome = 1;
else {
palindrome = 0;
break;





}
}


}





int main ()
{


char chaine[30];

printf ("Veuillez entrez un mot : ");
scanf ("%s", chaine);

if ( palindrome )

printf ("%s est un palindrome.\n", chaine);

else

printf ("%s n'est pas un palindrome.\n", chaine);
return 0;












}

1 réponse

Utilisateur anonyme
12 déc. 2015 à 00:56
Bonjour

Quand tu écris
if ( palindrome ) 
, tu n'appelles pas la fonction palindrome. Pour l'appeler en lui passant la chaine que tu viens de saisir, il faut faire
if (palindrome(chaine))
.

Mais ce n'est pas tout.

Ta fonction palindrome est déclarée comme étant de type int. Elle doit retourner (avec l'instruction return) une valeur int. Il manque un
return palindrome;
à la fin de ta fonction.
Ce n'est pas une idée très heureuse de donner le même nom à la fonction et à une variable. Peut-être as-tu l'habitude du VB, où on retourne une valeur en l'affectant au nom de la fonction.
0
jakbauer222 Messages postés 15 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 13 mars 2017
12 déc. 2015 à 01:07
Merci bcp pour votre reponse si vite je mets le return palindrome ou exactemnt ? desole je suis encore debut en C..
0
Utilisateur anonyme > jakbauer222 Messages postés 15 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 13 mars 2017
12 déc. 2015 à 01:20
À la fin de la fonction.

Si tu as envie d'améliorer ton programme, tu peux te passer complètement de la variable palindrome et faire un
return 0;
dès qu'une différence de caractères est trouvée, et un
return 1;
après ta boucle for.
0
jakbauer222 Messages postés 15 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 13 mars 2017
12 déc. 2015 à 01:30
Merciiiii beaucoup ca a marcher et j'ai fais exactement comme vous avez dis et je me suis débarrassé de la variable palindrome , merci encore ! ^^
0
Utilisateur anonyme > jakbauer222 Messages postés 15 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 13 mars 2017
12 déc. 2015 à 09:19
De rien :)
0