Question

In: Computer Science

I wrote this program to check a string is palindrome or not. but in both cases,...

I wrote this program to check a string is palindrome or not. but in both cases, it gives me palindrome.

could someone help me with this program? it has an error I couldn't find.

when I run the code and give a string, in both cases it gives me palindrome. for example if I give Pop it says it is a palindrome but if I give Salima, it also says palindrome.


#include<string>
#include <iostream>

using namespace std;

class PString:public string
{
   private:
       string testWord;
      
   public:
       PString();
       PString(string Pword){setPword(Pword);}
       void setPword(string Pword){ testWord = Pword;}
       bool isPalindrome(string testWord){
       }   

};

bool isPalindrome(string strg)
{
  
  
   for (int count = 0; count < strg.length()-1; count++)
   {
       if (tolower(strg[count]) != tolower(strg[strg.length()-(count+1)]))
       {
           return false;
       }
       else
       {return true;}
   }
  
}
int main ()
{
// Request input from user
string str;
cout << "\nThis is a palindrome-testing program." <<endl;
cout<<endl;
   cout<<"Enter a string to test:" <<endl;;
cin >> str;

// Create a PString object that will check strings
PString s(str);

// Check string and print output
if (s.isPalindrome(str))
cout << s << " is a palindrome.";
else
cout << s << " is not a palindrome.";
cout << endl;
return 0;
}

Solutions

Expert Solution

There are two problems with the above code:

1. if (s.isPalindrome(str)) -> is not the correct way to call the isPalindrome function. The code doesn't go inside the IsPalindrome function. Instead use ->if (isPalindrome(str))

2. There is a problem with the return statement inside the for loop in isPalindrome() code.

Lets understand this with an example. For eg: the String is "PopuP"

When we go inside the for loop,

first element=last element, so it will automatically return true without comparing the rest of the elements.

We need to handle the return statement like below:

Here instead of return true on comparing a single element we will return true, only after all the elements have been compared and are equal to their counterpart element. If any of them is not equal, it will return false there itself within the for loop.

Find the output below for this code:

Also find the complete code for your reference below after corrections:

#include<string>
#include <iostream>

using namespace std;

class PString:public string
{
private:
string testWord;
  
public:
PString();
PString(string Pword){setPword(Pword);}
void setPword(string Pword){ testWord = Pword;}
bool isPalindrome(string testWord){
}   

};

bool isPalindrome(string strg)
{
  
for (int count = 0; count < strg.length()-1; count++)
{
if (tolower(strg[count]) != tolower(strg[strg.length()-(count+1)]))
{
return false;
}
// else
// {return true;}
}
return true;
  
}
int main ()
{
// Request input from user
string str;
cout << "\nThis is a palindrome-testing program." <<endl;
cout<<endl;
cout<<"Enter a string to test:" <<endl;;
cin >> str;

// Create a PString object that will check strings
PString s(str);
// Check string and print output
if (isPalindrome(str))
cout << s << " is a palindrome.";
else
cout << s << " is not a palindrome.";
cout << endl;
return 0;
}


Related Solutions

C# Palindrome Permutation: Given a string, write a function to check if it is a permutation...
C# Palindrome Permutation: Given a string, write a function to check if it is a permutation of a palindrome. A palindrome is a word or phrase that is the same forwards and backwards. A permutation is a rearrangement of letters. The palindrome does not need to be limited to just dictionary words. Input: Tact Coa Output: True (permutations: "taco cat", "atco cta", etc.) Comment your code to explain it.
Write a program that determines whether an input string is a palindrome; that is, whether it...
Write a program that determines whether an input string is a palindrome; that is, whether it can be read the same way forward and backward. At each point, you can read only one character of the input string; do not use an array to first store this string and then analyze it (except, possibly, in a stack implementation). Consider using multiple stacks. In Pseudocode please
Public static boolean isPalindrome(String word) * Check to see if a word is a palindrome. Should...
Public static boolean isPalindrome(String word) * Check to see if a word is a palindrome. Should be case-independent. * @param word a String without whitespace * @return true if the word is a palindrome    Public static int longestWordLength(String words) * Returns length of the longest word in the given String using recursion (no loops). * Hint: a Scanner may be helpful for finding word boundaries. After delimiting by space, * use the following method on your String to remove...
Write a recursive method to determine if a String is a palindrome. The program should contain...
Write a recursive method to determine if a String is a palindrome. The program should contain a String array that you can load several test cases to test your palindrome testing method. The program should load your String Array with the test data containing the possible palindromes from a text file. The program should test you application with a text file contained in your project folder After testing your program with your test cases in the text file, you program...
Write a recursive method to determine if a String is a palindrome. The program should contain...
Write a recursive method to determine if a String is a palindrome. The program should contain a String array that you can load several test cases to test your palindrome testing method. The program should load your String Array with the test data containing the possible palindromes from a text file. The program should test you application with a text file contained in your project folder After testing your program with your test cases in the text file, you program...
Palindrome Javascript I am trying to write this javascript function to check if a number is...
Palindrome Javascript I am trying to write this javascript function to check if a number is Palindrome.. Palindrome means - a word, phrase, or sequence that reads the same backward as forward, e.g., madam or nurses run. This is the code i have, but it doesnt work. Code: let convertButton = document.getElementsByClassName("btn")[0]; let userInput = document.getElementById("number").value; let results = document.getElementById("result").value; convertButton.addEventListener("click", function (event) { event.preventDefault(); console.log(userInput); if (validatePalidrome(userInput)) document.getElementById("result").innerHTML = "true"; else document.getElementById("result").innerHTML = "false"; }); function validatePalidrome(numbers) { let...
Palindrome Javascript - NUMBERS I am trying to write this javascript function to check if a...
Palindrome Javascript - NUMBERS I am trying to write this javascript function to check if a number is Palindrome.. Palindrome means - a word, phrase, or sequence that reads the same backward as forward, e.g., 12321 This is the code i have, but it doesnt work. PLEASE MAKE SURE IT WORK BEFORE POST ANSWER, I GOT @ CODE THAT DID WORK BEFORE HTML JavaScript Palindrome Exercise rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" /> Palindrome Enter a positive number: Is this a palindrome? No...
PLEASE DO IN JAVA 4.15 Palindrome A palindrome is a string that is the same spelled...
PLEASE DO IN JAVA 4.15 Palindrome A palindrome is a string that is the same spelled forward as it is spelled backward. So, "abcba" is a palindrome, as are "eye" and "madam". This program takes as input from the user, a string and outputs whether the string is a palindrome. (1) Modify the given program to use a loop to output the string one character at a time. (1 pt) Example output for word = radar: Word Entered: radar r...
Write an X86-series assembly language program that checks whether input string is palindrome or not. A...
Write an X86-series assembly language program that checks whether input string is palindrome or not. A palindrome is a word, number, phrase or any other sequence which reads the same backward as forward e.g. madam, racecar. Sample Execution: Please enter a String: redivider The string is a palindrome Another Sample Execution: Please enter a String: abracadabra The string is not a palindrome
Write a recursive method to determine if a String is a palindrome. Create a String array...
Write a recursive method to determine if a String is a palindrome. Create a String array with several test cases and test your method. Write a recursive method to determine if a String is a palindrome. Create a String array with several test cases and test your method. In Java
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT