/* File: pali3.c
   Checks if a string is a palindrome.
*/

#include<stdio.h>
#include"genlib.h"
#include"simpio.h"
#include"strlib.h"

/* Function Prototypes */
bool IsPalindrome(string str) ;
string ReverseString(string str) ;

main() {
   string str ;

   printf("This program checks for palindromes.\n") ;
   printf("End the program by entering a blank line.\n") ;
   while (TRUE) {
      printf("String: ") ;
      str = GetLine() ;
      if ( StringEqual(str, "") ) break ;
      if ( IsPalindrome(str) ) {
	 printf("'%s' is a palindrome.\n", str) ;
      } else {
	 printf("'%s' is not a palindrome.\n", str) ;
      }
   } /* end while */
}

/* Function: IsPalindrome */
bool IsPalindrome(string str) {

   return( StringEqual(str, ReverseString(str)) ) ;
}

/* Function: ReverseString */
string ReverseString(string str) {
   int i, n ;
   char c ;
   string rev ;

   rev = "" ;
   n = StringLength(str) ;
   for (i = 0 ; i < n ; i++) {
      c = IthChar(str, i) ;
      rev = Concat(CharToString(c), rev) ;
   }
   return(rev) ;
}

