Programme palindrome fait pas ce qu'il faut

Résolu
jakbauer222 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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

  1. Utilisateur anonyme
     
    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
    1. jakbauer222 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci bcp pour votre reponse si vite je mets le return palindrome ou exactemnt ? desole je suis encore debut en C..
      0
      1. Utilisateur anonyme > jakbauer222 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
         
        À 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
    2. jakbauer222 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      1. Utilisateur anonyme > jakbauer222 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
         
        De rien :)
        0