0

回文の解決策を実装しようとしていたのですが、ロジックは正しいと思いますが、プログラムが無限ループに陥り、「Prep.exeが動作を停止しました」というエラーメッセージが表示されます。

int main()
{
    string word, reverse;

    cout << "Please enter a word to test for palindrome : ";
    cin >> word;
    cout << "Your word is: "<< word << endl;

    int i = 0;
    int size = word.length() - 1;
    while (size >= 0)
    {
        reverse[i++] = word[size--];
        //cout << reverse[i++];
    }

    cout << "The reversed word is: " << reverse << endl;


    if (word == reverse)
        cout << "It is palindrome" << endl;
    else
        cout << "It is not a palindrome" << endl;
}

whileループで何が間違っているのかわかりません。私はそれをデクリメントし続け、有効な終了条件を持っているのに、なぜそれがループでスタックするのですか?

4

2 に答える 2

6

あなたは無限ループを得ていません。が空の文字列であるreverse[i++]ため、行の境界外アクセスが原因でクラッシュが発生しています。代わりに関数reverseを使用してみてください。reverse.push_back()

于 2012-12-06T02:09:52.897 に答える
0

変数 reverse を初期化しましたか?それを確認して、初期化後に試してください。

うまくいくことを願っています

于 2012-12-06T02:09:49.260 に答える