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