0

ここでの問題は、ユーザー入力からの文字列にできないことです。文字列は 7 つあり、そのうち 6 つが数字で、1 つが単語「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 を受け取ってステートメントを出力する方法がよくわかりません。複数の文字列をテストする方法を見つけてから、return ステートメントを使用してcout << str << "is not a palindrome のようなものを出力する方法を見つける必要があります。";

4

2 に答える 2

3

your use of str = "one", "two", "three";gets strset to "three"...,オペレーターがそれを行います。さらに、1 つのstr文字列を含めることができますが、それ以上割り当てようとしても機能しません。(未定義の) 変数に割り当てる名前は、関数へのポインターです。それを尋ねると、null ポインターになることはないため、常に true になります。IsNumPalindromeIsNumif(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 に答える