C++ Recursion and Pointer Problems

C++ Recursion and Pointer Problems

First off, this is for an assignment.

First off, this is for an assignment.

What's required:

1.Take in string input
2. copy string (stripping out white space, punctuation, and 
   covert all characters to uppercase in the process)
3. Then determine if this copied string is a palindrome.

The method required for determining a palindrome:

Base Case:  string length is <= 1
General Case: if first letter != last letter, false, otherwise
               point to next letter and write '\0' to last letter and
               call the method again

For example:

RACECAR\0   R==R
ACECA\0     A==A
CEC\0       C==C
E\0         E <= 1  TRUE!

I cannot get my isPalindrome function to work correctly. Everything else is spot on, as far as I can tell. I really think the problem lies in my recursive call. I have been debugging this for 2 days and I cannot figure why the return is wrong. Any help would be GREATLY appreciated. I'm not looking for a hand out, maybe just some extra eyes on this code. Thanks.

#include <iostream>
#include <string>
#include <cctype>   
using namespace std;

int charCount(char * copy) { int count = 0;

for (int i = 0; copy[i] != '\0'; i++)
{
    count++;
}

return count;

}

bool isPalindrome(char *copy) { bool result = false; int size = charCount(copy);

char * last = &amp;copy[size - 1];

if (size &lt;= 1)
{
    result = true;
}

if (copy != last)
{
    result = false;
}

else
{
    ++copy;
    last = '\0';
    isPalindrome(copy);
}

return result;

}

void stringCopy(char * source, char * destination) { int sourceIndex = 0; int destIndex = 0;

while (source[sourceIndex] != '\0')
{
    while (!(isalnum(source[sourceIndex])) &amp;&amp; source[sourceIndex] != '\0')
    {
        sourceIndex++;
    }

    if (source[sourceIndex] == '\0')
    {
        break;
    }

    if (isalpha(source[sourceIndex]))
    {
        destination[destIndex] = toupper(source[sourceIndex]);
    }

    if (isdigit(source[sourceIndex]))
    {
        destination[destIndex] = source[sourceIndex];
    }

    sourceIndex++;
    destIndex++;
}

destination[destIndex] = '\0';

}

int main() { string input = "";

cout &lt;&lt; "Enter a string: ";
getline(cin, input);

char * source = &amp;input[0];
int sourceSize = charCount(source);

char * copy = new char[sourceSize];

stringCopy(source, copy);

int copySize = charCount(copy);

if (isPalindrome(copy))
{
    cout &lt;&lt; input &lt;&lt; " is a palindrome!" &lt;&lt; endl;
}

else
{
    cout &lt;&lt; input &lt;&lt; " is not a palindrome" &lt;&lt; endl;
}

return 0;

}


Angular 9 Tutorial: Learn to Build a CRUD Angular App Quickly

What's new in Bootstrap 5 and when Bootstrap 5 release date?

Brave, Chrome, Firefox, Opera or Edge: Which is Better and Faster?

How to Build Progressive Web Apps (PWA) using Angular 9

What is new features in Javascript ES2020 ECMAScript 2020

C/C++ vs. Rust: A developer’s perspective

In this post, you'll see the difference between Rust and C/C++ in a developer’s perspective

Variable Introduction in C#[Bangla]

LIKE | COMMENT | SHARE | SUBSCRIBE A variable is nothing but a name given to a storage area that our programs can manipulate. Each variable in C# has a speci...