Я пытаюсь проверить, является ли предложение палиндромом или нет. Ни пробел, ни знаки препинания не имеют значения.
Примеры:
• Никогда нечетные или четные
• Мужчина просматривает план Панамского канала.
• Привратник видит имя, гаражник видит бирку с именем
Ни одно из этих предложений не соответствует действительности в моем коде. На моем первом for я стараюсь убрать пробелы, знаки препинания и превратить верхние буквы в нижние.
int palindrome(char *str){
int n,n2 = 0,i,j=0;
n = sizeof(str)/sizeof(char);
char nova[n];
for (i=0;i< n;i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
nova[n2] = ('a' + str[i] - 'A');
n2++;
}
else if(str[i] >= 'a' && str[i] <= 'z'){
nova[n2] = str[i];
n2++;
}
}
i=0;
while (i < n2-1){
if (nova[i]!= nova[j]){
return 0;
}
i++;
j--;
}
return 1;
}
sizeof(str)
.. - person Eugene Sh.   schedule 06.10.2016const char*
. В любом случае,sizeof(str)
— это не то, что вы используете здесь. - person WhozCraig   schedule 06.10.2016sizeof
. Я бы рекомендовал отменить ваше редактирование. - person Random Davis   schedule 06.10.2016sizeof
каким-то волшебным образом не будет работать для ваших целей. - person AnT   schedule 06.10.2016#include <ctype.h> them use the
tolower()`, чтобы получить все строчные буквы. - person user3629249   schedule 07.10.2016sizeof(str)
получает размер указателя. Предложите использовать функциюstrlen()
- person user3629249   schedule 07.10.2016for (i=0;i< n;i++){
, можно сократить до: `for(int i=0; i‹n; i++) { nova[i] = tolower(str[i]; } - person user3629249   schedule 07.10.2016