×
Reviews 4.9/5 Order Now

Palindrome function assignment solution implemented in C++

July 08, 2024
Harry F. Grimmett
Harry F.
🇨🇦 Canada
C++
Harry F. Grimmett, with a master’s in computer science from the University of Kent, is a C++ homework helper, boasting six years of field experience.
Key Topics
  • Complete the provided C++ program by debugging the function isPalindrome.
Tip of the day
Start by breaking problems into small functions using Racket’s functional programming style—test each one in the DrRacket IDE to catch errors early and ensure your logic is sound before combining them into a full solution.
News
In 2025, Visual Studio Code remains the most popular IDE for programming students worldwide, now featuring deeper AI integration through GitHub Copilot X for real-time code suggestions and debugging.

The purpose to write a C++ assignment is to gain skill in reading and understanding code that uses iterators. The C++ STL (standard template library) requires iterators in many places, so C++ programmers need to be confident in using iterations.

Complete the provided C++ program by debugging the function isPalindrome.

The function should determine if a vector of ints is a palindrome. For example, {1, 2, 3, 2, 1} and { 1, 2, 3, 3, 2, 1 } are palindromes but { 1, 2, 3, 4, 1 } and { 1, 2, 3, 4, 2, 1 } are not palindromes.

This program uses iterators. The function works in all cases except when an even-length palindrome is passed in.

The output should be:

  • False
  • False
  • True
  • true

The given code doesn't work right for the last case and produces this output:

  • false
  • false
  • true
  • false

Your job is to figure how the function uses iterators and fix the bug.

#include #include #include #include using namespace std; bool isPalindrome(const vector & v); int main() { vector v1False{ 1, 2, 3, 4, 1 }; cout << boolalpha << isPalindrome(v1False) << endl; vector v2False{ 1, 2, 3, 4, 2, 1 }; cout << boolalpha << isPalindrome(v2False) << endl; vector v1True{1, 2, 3, 2, 1}; cout << boolalpha << isPalindrome(v1True) << endl; vector v2True{ 1, 2, 3, 3, 2, 1 }; cout << boolalpha << isPalindrome(v2True) << endl; system("pause"); return 0; } bool isPalindrome(const vector & v) { if ( v.size() == 0 ) { return true; } auto front = v.begin(); // first element of v. auto rear = --v.end(); // last element of v. // algorithm: // iterators front and rear move towards center. // if there is a mismatch, the loop ends // if palindrome, front and rear both get to middle. // as long as front and rear elements have the same value // and front hasn't gone past rear, increment both. for (; *front == *rear && front < rear; ++front, --rear) { // no op } // check positions of front and rear. // if there is a mismatch, it will happen // before front passes rear. return front >= rear; }

Related Samples

Access our free C++ assignment samples to enhance your understanding and skills. These detailed examples offer clear solutions and insights, making complex concepts easier to grasp and boosting your academic performance.