Hej!
Robię program który sprawdza czy podany wyraz jest palindromem. I mam problem zrobiłem bardzo długi kod, który na dodatek działa błędnie dla słów o parzystej liczbie liter. Mam prośbę czy mógłby ktoś pokazać czy można zrobić ten program krótszym kodem i rzecz jasna by działał w całości. Z góry dziękuję.
#include<stdio.h>
#include<stdlib.h>
#include<strings.h>
#define LENGTH_ARRAY 100
void NP(char*text1)
{
int t;
int i=0;
int y=1;
int x=strlen(text1)-y;
while(x!=0)
{
if(text1[i]==text1[i+(strlen(text1)-y)])
{
y+=2;
x=strlen(text1)-y;
t=1;
}
else
{
x=0;
t=-1;
}
i++;
}
if(t==1)
{
printf("To jest palindrom");
}
else{
printf("To nie jest palindrom");
}
}
void LP(char*text1)
{
int t;
int i=0;
int y=1;
int x=strlen(text1)-y;
while((x-i)!=1)
{
if(text1[i]==text1[i+(strlen(text1)-y)])
{
y+=2;
x=strlen(text1)-y;
t=1;
}
else
{
x=0;
t=-1;
}
i++;
}
if(t==1)
{
printf("To jest palindrom");
}
else{
printf("To nie jest palindrom");
}
}
int main()
{
char text1[LENGTH_ARRAY];
printf("Podaj pierwszy wyraz: ");
scanf("%s",text1);
printf("Dlugosc slowa=%d\n",strlen(text1));
if((strlen(text1)%2)==1)
{
NP(text1);
}
else{
LP(text1);
}
return 0;
}