Почему программа не выводит true независимо от регистра? - PullRequest
0 голосов
/ 02 февраля 2019

Мои назначения требуют, чтобы я продолжал принимать ввод от пользователя и выводить, является ли это палиндромом, пока не будет введено слово DONE.Кроме того, такие слова, как Боб, должны иметь вывод true, потому что мы должны игнорировать регистр (верхний / нижний).

Я впервые использую C ++.

#include <iostream>
#include <string>
using namespace std;
int main()
{
string wordInput;
while (wordInput != "DONE")
{ 
    cout << "Please enter a word: ";
    cin >> wordInput;
    int wordLength = wordInput.length();
    int wordHalf = (wordLength / 2);
    bool flag = false;
    for (int i = 0; i <wordHalf; i++)
    {
        if (tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
        {
            flag = true;
        }
        else
        {
            flag = false;
            break;
        }
    }
    if (flag == true)
    {
        cout << "true"<<endl;
    }
    else
    {
        cout << "false"<<endl;
    }
}   
return 0;   
}

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Ваша проблема со словами, которые не были правильно определены, исходит из этой строки:

if(tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))

Если вы внимательно посмотрите, вы неправильно установите круглые скобки.Попробуйте вместо этого:

if(tolower(wordInput[i]) == tolower(wordInput[wordLength-1-i]))
0 голосов
/ 02 февраля 2019

Возможно, это связано с тем, что wordInput объявляется дважды, один раз перед циклом while и один раз внутри него.Это путает то, на что смотрит условие цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...