caspar1 发表于 2022-5-4 10:29:57

作業問題

試撰寫一函式isPalindrome(),此函式接收一字串參數,並傳此字串是否為迴文(palindrome)。

我不太理解如何去完成它的條件

chxchxkkk 发表于 2022-5-4 10:40:24

回文就是正着读和倒着读都是一样的字符顺序 比如:abcba 这样的

caspar1 发表于 2022-5-4 11:10:37

chxchxkkk 发表于 2022-5-4 10:40
回文就是正着读和倒着读都是一样的字符顺序 比如:abcba 这样的

我想問一下為甚麼我下面的 char str[] 會報錯
#include <iostream>
using namespace std;

bool ispalindrome(char *str,int n)
{
    char *front = str;
    char *back = str + n-1;

    if(str == NULL||n<1)
    {
      return false;
    }
    while (front < back)
    {
      if (*front != *back)
      {
            return false;
      }
      front++;
      back--;
    }

    return true;
}

int main()
{
    char str[];這邊
    cin >> str;
    int n = strlen(str);
    bool n = strlen(str);
    bool sign;
    sign = ispalindrome(str,n);
    if (sign == true)
    {
      cout << "此字串是回文" << endl;
    }
    else
    {
      cout << "此字串不是回文" << endl;
    }

    return 0;
}

傻眼貓咪 发表于 2022-5-4 11:52:48

caspar1 发表于 2022-5-4 11:10
我想問一下為甚麼我下面的 char str[] 會報錯
#include
using namespace std;


因为你用的是 C++ 的输入流 std::cin,char str[] 必须预设其长度,除非用 C++ 的 std::string 类型数据(长度可变)。

傻眼貓咪 发表于 2022-5-4 11:55:45

caspar1 发表于 2022-5-4 11:10
我想問一下為甚麼我下面的 char str[] 會報錯
#include
using namespace std;


#include <iostream>
using namespace std;

bool ispalindrome(char* str, int n)
{
    char* front = str;
    char* back = str + n - 1;

    if (str == NULL || n < 1)
    {
      return false;
    }
    while (front < back)
    {
      if (*front != *back)
      {
            return false;
      }
      front++;
      back--;
    }

    return true;
}

int main()
{
    char str; // <--------------------------- 注意这里 ----------------------------
      cin >> str;
    int n = strlen(str);
    // bool n = strlen(str); <--------------------------- 注意这里 ----------------------------
    bool sign;
    sign = ispalindrome(str, n);
    if (sign == true)
    {
      cout << "此字串是回文" << endl;
    }
    else
    {
      cout << "此字串不是回文" << endl;
    }

    return 0;
}

caspar1 发表于 2022-5-5 17:08:40

傻眼貓咪 发表于 2022-5-4 11:52
因为你用的是 C++ 的输入流 std::cin,char str[] 必须预设其长度,除非用 C++ 的 std::string 类型数据 ...

原來是這樣,當初沒注意到,感謝你!
页: [1]
查看完整版本: 作業問題