Palindromes using C programming
(Palindromes) A palindrome is a string that is spelled the same way forward and backward.
Some examples of palindromes are: “radar,” “able was i ere i saw elba,” and, if you ignore blanks, “a
man a plan a canal panama.” Write a recursive function testPalindrome that returns 1 if the string
stored in the array is a palindrome and 0 otherwise. The function should ignore spaces and punctuation
in the string.
Answer:
#include <stdio.h>
#define SIZE 80
// function prototype
int testPalindrome( char array[], int left, int right );
int main( void )
{
char c; // temporarily holds keyboard input
char string[ SIZE ]; // original string
char copy[ SIZE ]; // copy of string without spaces
unsigned int count = 0; // length of string
unsigned int copyCount; // length of copy
unsigned int i; // counter
puts( "Enter a sentence:" );
// get sentence to test from user
while ( ( c = getchar() ) != '\n' && count < SIZE )
{ string[ count++ ] = c; } // end while
string[ count ] = '\0'; // terminate string
// make a copy of string without spaces
for ( copyCount = 0, i = 0; string[ i ] != '\0'; ++i )
{ if ( string[ i ] != ' ' && string[ i ] != ',' && string[ i ] != '.' && string[ i ] != '!' )
{ copy[ copyCount++ ] = string[ i ]; } // end if
} // end for
// print whether or not the sentence is a palindrome
if ( testPalindrome( copy, 0, copyCount - 1 ) )
{ printf( "\"%s\" is a palindrome\n", string ); } // end if else
{ printf( "\"%s\" is not a palindrome\n", string ); } // end else
} // end main
// function to see if the sentence is a palindrome
int testPalindrome( char array[], int left, int right )
{ // test array to see if a palindrome
if ( left == right || left > right ) {
return 1;
} // end if
else if ( array[ left ] != array[ right ] ) {
return 0;
} // end else if
else {
return testPalindrome( array, left + 1, right - 1 );
} // end else
}
Leave a reply