Функция bool не будет правильно сравнивать массивы - PullRequest
1 голос
/ 29 февраля 2012

Работа над небольшой программой, которая будет принимать строку от пользователя и проверять, является ли она палиндромом. (Фраза, написанная таким же образом в обратном направлении, например «Никогда нечетно или нечетно»). Я уже создал функции, которые удаляют пробелы и любые неалфавитные символы из строки, а затем сделали копию строки. (Все три из этих функций были полностью протестированы, проблем здесь нет.) Сейчас я работаю над функцией, которая должна сравнивать обе строки, чтобы увидеть, написана ли строка одинаково вперед и назад.

Функция должна решить, является ли она палиндромом, просматривая основную строку вперед и копию назад и сравнивая каждый элемент. И все же я получаю ложный ответ, что я делаю не так?

_Bool isPalindrome(char str[], char copy[])
{
  int i = 0;
  int count = 0, j = 0;

  // loop through the main string to find the number of elements
  while(str[j] != '\0')
  {
     count++;
     j++;
  }

  //loop through the main string until the null character.
  while(str[i] != '\0')
  {
    // to loop through the copy backwards, 
    // use the size of the first and subtract i
    size = count - i;
    if(str[i] != copy[size])
      return FALSE;
    i++;
  }

  return TRUE;
}

1 Ответ

0 голосов
/ 29 февраля 2012

Должно быть:

   size = count - i - 1;
...