I am trying to determine if a word is a palindrome or not using queues, but I am receiving the wrong results. I have tried several things to get it to work using the boolean variable isPalin. Will someone lead me to the right direction please? I have been trying for hours, and I feel that it is something small that is holding me back.
Current Output:
mom is a Palindrome
cat is a Palindrome
noon is a Palindrome
mouse is a Palindrome
Expected Output
mom is a Palindrome
cat is NOT a Palindrome
noon is a Palindrome
mouse is NOT a Palindrome
#include <fstream>
#include <string>
#include <sstream>
#include <stdlib.h>
#include "queue.h"
usingnamespace std;
int main()
{
stringstream ss;
string line; // name of my identifier used to read in data
string word; // individual characters
queueType<string> u; // declares queue u
queueType<string> r; // declare queue r
queueType<string> s; // declare queue s
ifstream inData("input.txt"); // declaration of inData
ofstream outData("output.txt"); // declaration of outData
while ( getline( inData, line ) ) // reads words in file using getline to capture all spaces
{ /*something to break up line into individual character*/
ss << line;
while ( ss >> word )/*there are still characters*/
{
u.addQueue(word);
s.addQueue(word); /*adds characters of word into queues u and s*/
}
while (!u.isEmptyQueue()) /*u is not empty*/
{
r.addQueue(u.front());
u.deleteQueue();
/*adds to the front of u into r and then delete from u*/
}
bool isPalin;
isPalin = true;
while (!s.isEmptyQueue())/*s is not empty*/
{
s.deleteQueue();
u.addQueue(word);
if(!(u.front() == r.front())) /*compares front elements, does something if the two not equal, delete elements*/
{
isPalin = false;
u.deleteQueue();
r.deleteQueue();
break;
}
else
{
u.deleteQueue();
r.deleteQueue();
}
}
if (isPalin == true)
{
outData<<word<<" is a Palindrome"<<endl;
}
if (isPalin == false)
outData<<word<<" is NOT a Palindrome"<<endl;
ss.clear();
}
inData.close(); // closes inData
outData.close(); // closes outData
system("PAUSE");
return 0;
}