lundi 24 août 2020

Checking both ends of a string not working

I am trying to the beginning of a string and the end. If the word has an uppercase letter we change it to lowercase. If the word has a space or '"' we erase the character. The first recursive call it should check and see that the end of the string has a capital letter and it should change it to lowercase. However when I output word[word.size()] it outputs a blank space, but it I output word[word.size() - 1] it will output the letter that I am looking for. I wasn't sure what the blank space is and how I should handle it as I don't want it in my string because it is causing comparison issues.

bool checkPalindrome(string word){
if (isupper(word[0]))
{
    word[0] = tolower(word[0]);
}

if (isupper(word[word.size()]))
{
    word[word.size()] = tolower(word[word.size()]);
}

//check if there is a space or "" if there is then delete that position from the string
if (word[0] == ' ' || word[0] == '"')
{
    word.erase(1);
}

if (word[word.size()] == ' ' || word[word.size()] == '"')
{
    word.pop_back();
}

if (word.size() > 1)
{
    if (word[0] == word[word.size()])
    {
        word = word.substr(1, word.size() - 2);
        return checkPalindrome(word, count);
    }
    else
    {
        return false;
    }
}
else
{
    return false;
}
int main()
{

    ifstream inFile;
    bool check = false;
    string temp = "";
    int count = 0;
    vector<string> vect;

    //Reading from a file line by line
    inFile.open("words.txt");
    if (inFile.is_open())
    {
        while (getline(inFile, temp))
        {
            vect.push_back(temp);
        }
    }
    inFile.close();

    for (auto i = 0; i < vect.size(); i++)
    {
        count = vect[i].size();
        check = checkPalindrome(vect[1], count);

        if (check == true)
        {
            cout << vect[i] << ", is a palindrome!\n";
        }
        else
        {
            cout << vect[i] << ", is not a palindrome.\n";
        }
    }
   } return 0;

Aucun commentaire:

Enregistrer un commentaire