У меня есть вопрос об этом коде, который я пишу для упражнения. Я должен проверить, является ли строка палиндром. Я не могу изменить объявление функции. Функция возвращает только 1, когда все буквы одинаковы (например, «aaaa»), но если я заряжу предложение другим палиндром (например, «anna»), функция возвращает мне 0, я не могу понять, почему это приложение. Спасибо!Проверьте, является ли строка палиндром в 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;
}
Каков ваш вопрос? –
Если я поставил что-то вроде anna, функция вернет мне 0, но «anna» - это палиндром – Marco
Есть много ресурсов, которые показывают алгоритмы для этой проблемы. Вот один для c - http://www.programmingsimplified.com/c-program-find-palindrome – MrMadsen