Question
Problem Statement A palindrome is a character string that is equal to its reverse. A simple palindrome would be a word that is the same
Problem Statement A palindrome is a character string that is equal to its reverse. A simple palindrome would be a word that is the same spelled forward or backward such as level. A palindrome can also be a phrase such as "Never odd or even". This is not a simple palindrome, since making it the same as its reverse requires that we ignore spaces and punctuation marks. For this assignment, a palindrome is defined to be a character string, where all non-alphabetic characters are ignored, and upper-case and lower-case versions of the same letter are viewed as equivalent. Alphabetic characters includes characters A through Z and a through z inclusive. Thus punctuation marks, digits, space, tab, carriage return, hyphens, underscores, and other nonalphabetic characters are ignored in the palindrome decision process.
The assignment is to write a program that does the following. You will need to define extra functions to complete some of these tasks such as the first two bullet items:
? Prompts the user to type in a character string
? Gets the characters and stores them in a stack data structure.
? Makes use of the stack and a queue data structure to check for a palindrome.
? Defines a function isPalindrome that determines whether the string is a palindrome. The function isPalindrome returns 1 if x is a palindrome, and 0 if x is not a palindrome. int isPalindrome(char *x)
? Displays an appropriate message on the screen that indicates the string and whether the string is a palindrome or not.
Programming Hints
? Your program will involve three files: main.cpp, Palindrome.cpp, and Palindrome.h.
o The file Palindrome.h contains exactly one line, the prototype of your function isPalindrome.
o The file Palindrome.c contains the definition of your function isPalindrome. It should have your name, the date, and #include "Palindrome.h". It should not contain a main function.
o Your file main.c contains your main function. That file should also specify any #include files, including Palindrome.h. Your main program should thoroughly test the Palindrome program ? The following header files must be defined and included in the source code using the stacks and queues.
o #include stack.h
o #include queue.h
You will need to submit these 2 files with your submission of the other 3 files mentioned above.
? The following functions may be helpful and are provided by the C Standard Library: '
o int isalpha(char c) // returns non-zero integer if c is an alphabetic character, 0 if not o char toupper(char c) // returns the upper-case version of an alphabetic character
Testing Suggestions A list of examples is given below in a C++ variable declaration. Make sure that you test for the following situations.
1. Test that your program returns a value of 1 on the examples.
2. Test that your program returns 0 if you change one of the characters in any of the examples.
Examples "A dog, a panic in a pagoda"
"A dog, a plan, a canal, pagoda" "
A man, a plan, a canal-- Panama! // punctuation and spaces are ignored
"civic"
"If I had a hi-fi"
"Do geese see God?"
"Madam, Im Adam."
"Madam, in Eden, Im Adam."
"Neil, a trap! Sid is part alien!"
"Never odd or even"
"No devil lived on."
"No lemons, no melon"
"racecar"
"RACEcar" //uppercase equals lowercase
Rats live on no evil star."
"Red rum, sir, is murder!"
"Rise to vote, sir."
"rotator"
"rotor"
"Step on no pets."
"Was it a cat I saw?"
"Was it a car or a cat I saw?"
"Yawn a more Roman way. "
//Queue.h
#ifndef QUEUE_H #define QUEUE_H #include
// Stack template template
// Queue operations void enqueue(T); void dequeue(T &); bool isEmpty() const; bool isFull() const; void clear(); };
//*************************************************************** // This constructor creates an empty queue of a specified size. * //*************************************************************** template
//*************************************************************** // Copy constructor * //*************************************************************** template
//*************************************************************** // Destructor * //*************************************************************** template
//*************************************************************** // Function enqueue inserts a value at the rear of the queue. * //*************************************************************** template
//*************************************************************** // Function dequeue removes the value at the front of the queue * // and copies t into num. * //*************************************************************** template
//*************************************************************** // isEmpty returns true if the queue is empty, otherwise false. * //*************************************************************** template
if (numItems) status = false; else status = true;
return status; }
//*************************************************************** // isFull returns true if the queue is full, otherwise false. * //*************************************************************** template
if (numItems < queueSize) status = false; else status = true;
return status; }
//***************************************************************** // clear sets the front and rear indices, and sets numItems to 0. * //***************************************************************** template
//Stack.h
#ifndef STACK_H #define STACK_H #include
// Stack template template
public: //Constructor Stack(int); // Copy constructor Stack(const Stack&); // Destructor ~Stack(); // Stack operations void push(T); void pop(T &); bool isFull(); bool isEmpty(); }; //*************************************************** // Constructor * //***************************************************
template
//*************************************************** // Copy constructor * //***************************************************
template
//*************************************************** // Destructor * //***************************************************
template
//************************************************************* // Member function push pushes the argument onto * // the stack. * //*************************************************************
template
template
//************************************************************* // Member function isFull returns true if the stack * // is full, or false otherwise. * //*************************************************************
template
//************************************************************* // Member function isEmpty returns true if the stack * // is empty, or false otherwise. * //*************************************************************
template
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access with AI-Powered Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started