0

这里的问题是它不能是用户输入的字符串。有7个字符串,其中6个是数字,一个是单词“abba”。到目前为止,我已经编写了很多代码,但是我无法找到一种方法来测试我必须用于程序的 7 个字符串。

#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>

using namespace std;

bool isNumPalindrome(string str);

int main ()
{
    string str;
    str = "10", "32", "222", "abba", "444244", "67867876", "123454321";
    int userExit;

    bool isNum = isNumPalindrome;

    if (isNumPalindrome)
    {
        cout << str << " is a palindrome";
        cout << endl;
    }
    else
    {
        cout << str << " is not a palindrome";
        cout << endl;
    }

    cout << "Press any key to exit: ";
    cin >> userExit;
    cout << endl;

    return 0;
}

bool isNumPalindrome(string str)
{
    int length = str.length();

    for (int i = 0; i < length / 2; i++)
        if (str[i] != str[length - 1 - i])
            return false;

        return true;
}

如您所见,我还没有完全弄清楚如何在 main 中执行一个函数来获取返回并输出一条语句。我需要找出如何测试多个字符串,然后如何使用 return 语句来打印类似cout << str << "is not a palindrome 之类的东西。";

4

2 回答 2

3

您对str = "one", "two", "three";get的使用str设置为"three"...,操作员会这样做。此外,str可以包含一个字符串,试图分配更多是行不通的。IsNumPalindrome您分配给(未定义的)变量的名称IsNum是指向函数的指针,如果您随后询问if(IsNum)它永远不会是空指针,所以总是正确的。

我可以继续。似乎有一条没有严重错误或对 C++ 严重误解的行。

于 2013-05-05T20:06:58.290 回答
0
string str;
str = "10", "32", "222", "abba", "444244", "67867876", "123454321";

改成

std:vector< std::string > vecOfStrings = { "10", "32", "222", "abba", "444244", "67867876", "123454321" };

然后只需遍历向量并将每个字符串传递给函数

for (unsigned int i = 0; i < vecOfStrings.size(); i++) {
    if ( isNumPalindrome( vecOfStrings[i] ) ) {
        // do something
    }
}
于 2013-05-05T20:07:58.673 回答