// FILE: pal.cxx // Program to test whether an input line is a palindrome. Spaces, // punctuation, and the difference between upper- and lowercase are ignored. #include // Provides assert #include // Provides isalpha, toupper #include // Provides EXIT_SUCCESS #include // Provides cout, cin, peek #include // Provides the queue template class #include // Provides the stack template class using namespace std; int main( ) { queue q; stack s; char letter; queue::size_type mismatches = 0; // Mismatches between queue and stack cout << "Enter a line and I will see if it's a palindrome:" << endl; while (cin.peek( ) != '\n') { cin >> letter; if (isalpha(letter)) { q.push(toupper(letter)); s.push(toupper(letter)); } } while ((!q.empty( )) && (!s.empty( ))) { if (q.front( ) != s.top( )) ++mismatches; q.pop( ); s.pop( ); } if (mismatches == 0) cout << "That is a palindrome." << endl; else cout << "That is not a palindrome." << endl; return EXIT_SUCCESS; }