Hi everyone! I am trying to write a function that compares the original word with its reversed. My main problem, and I cannot figure out why, I am getting always a "false" return in a boolean function that compares the two words. I have checked for spaces or strange word composition but it seems all ok. Here is my code:
Thank you very muchCode:int len(const char* s) { int n = 0; while (*s != '\0') { ++n; ++s; } return n; } char* reverse_word(const char* c) { int n = len(c); // char* p2 = new char[n + 1]; // char* temp = &p2[n]; char* p2 = new char[n + 1](); // *** default initialize char* temp = &p2[n - 1]; // *** while(*c != '\0') *temp-- = *c++; delete[] p2; return p2; } bool is_palindrome(const char* c, const char* p) { if (p == c) return true; return false; } int main(int argc, const char * argv[]) { char ar[] = {"kayak"}; char* p = &ar[0]; char* p1 = nullptr; p1 = reverse_word(p); cout << p << " and " << p1 << " are "; if (!is_palindrome(p,p1)) cout << "not "; cout << "palindromes." << endl; keep_window_open(); return 0; }




Reply With Quote
