J'ai une question à propos de ce code que j'écris pour un exercice. Je dois vérifier si une chaîne est palindrome. Je ne peux pas changer la déclaration de la fonction.La fonction ne renvoie que 1 lorsque toutes les lettres sont identiques (comme "aaaa") mais si je charge la phrase avec un autre palindrome (comme "anna") la fonction me renvoie 0, Je ne peux pas comprendre pourquoi cette appening.Thank!Vérifie si une chaîne est en palindrome C
char* cargar (char*);
int pali (char*);
int main()
{
char*texto=NULL;
texto=cargar(texto);
int res=pali(texto);
if(res==1){printf("\nPalindrome");}
else printf("\nNot palindrome");
return 0;
}
char* cargar (char*texto)
{
char letra;
int i=0;
texto=malloc(sizeof(char));
letra=getche();
*(texto+i)=letra;
while(letra!='\r'){
i++;
texto=realloc(texto,(i+1)*sizeof(char));
letra=getche();
*(texto+i)=letra;}
*(texto+i)='\0';
return texto;
}
int pali (char* texto)
{
int i;
for(i=0;*(texto+i)!='\0';i++){
}i--;
if(i==0||i==1){return 1;}
if(*texto==*(texto+i)){
return pali(++texto);
}
else return 0;
}
Quelle est votre question? –
si je mets quelque chose comme anna, la fonction me renvoie 0, mais "anna" est palindrome – Marco
Il existe de nombreuses ressources qui montrent des algorithmes pour ce problème. Voici un pour c - http://www.programmingsimplified.com/c-program-find-palindrome – MrMadsen