回文作业练习C ++

时间:2019-11-23 19:48:29

标签: c++

 Modify the function isPalindrome of Example 6-6 so that when determining whether a string is a palindrome, cases are ignored, that is, uppercase and lowercase letters are considered the same.

 The isPalindrome function from Example 6-6 has been included below for your convenience.

    bool isPalindrome(string str) 
    {
    int length = str.length(); 
    for (int i = 0; i < length / 2; i++) {
        if (str[i] != str[length – 1 – i]) {
             return false;
        } // if    
      } // for loop
     return true;
    }// isPalindrome

您的程序应打印一条消息,指示字符串是否是回文符:

madam is a palindrome

我必须说实话,我正在为C ++编程做一个介绍,但老实说我不喜欢它,因为我对它不了解,我只想通过这门课,然后为我找到一个新的专业。因为计算机科学不适合我,所以如果您能帮助我解决这个家庭作业,那就太好了!我已经尽了最大的努力来学习编程,但是我无法看到它正在做的事情,因为我不擅长解决问题,并且我总是需要帮助并着眼于解决问题的方法。

2 个答案:

答案 0 :(得分:1)

我不会给你答案,但是我会给出一些提示。

回文式程序正在获取字符串并比较字符。更具体地说,它采用第一个字符,将其与倒数第二个字符进行比较,并查看它们是否匹配。如果是这样,则将第二个字符与倒数第二个字符进行比较,然后继续进行直到检查所有字符对,或者如果找到了不匹配的字符对,则将退出紧急状态。

请记住,c ++中的字符串以null结尾,因此最后一个字符始终是null字符符号。这就是为什么我们必须比较第n个和第n-1个。

从下至上,字符串只是一个字符数组,即字符的集合。每个字符都有一个ASCII值,每个值恰好对应一个字符。 A是十进制值65,B是十进制值66,a是十进制值97,b是十进制值98,依此类推。

一些图片的Google ASCII表,如果这还没有什么意义的话。

您的作业要说的是字符串“ pop”是回文,而“ Pop”不是。这显然是程序中的错误。您需要找到一种方法来使字符串全部变为小写或全部变为大写,以消除该错误。

是否有类似str.ToUpper()或str.ToLower()的方法?如果是这样,您想在功能的顶部还是底部将其添加到哪里?如果不是,您可以进行ASCII比较以找到所有大写或小写字符并进行调整吗?您想在哪里做?

(提示:解决此问题的方法不止一种。找到一种方法并坚持下去。我在上一段中给了您三种可能的解决方案。)

最后一点,不要轻易放弃。如果您有问题,请寻求帮助!感到困惑和迷失是很普遍的。您的教授在那里帮助您。其他教授也有帮助。问他们。问你的同学。问很多问题。这些东西看起来令人困惑和艰巨。请不要让它吓到你。

哎呀,十年来我一直假装自己是一名专业程序员,但我仍然发现自己几乎每天都在谷歌搜索和提问。

祝你好运!

答案 1 :(得分:-2)

回文(palindrome)是一个类似“雷达”的单词,如果其字母颠倒,其含义也相同。例如,“陪审团”一词不是回文,因为如果字母相反,则变成“ yruj”。

我的代码用于检测回文。为什么会失败?

bool isPalindrome(string str) 
{
int length = str.length(); 
for (int i = 0; i < length / 2; i++) {
    if ( toupper( str[i] ) != toupper( str[length – 1 – i] ) ) {
         return false;
    } // if    
  } // for loop
 return true;
}// isPalindrome