#include #include #include const char mirror[36] = "A***3**HIL*JM*O***2TUVWXY51SE*Z**8*"; void palindrome(char *string) { int len = strlen(string); int i; char a, b; char ispalin, ismirror, ismirpal; ispalin = ismirror = ismirpal = 1; for (i = 0; i < len; i++) { a = string[i]; b = string[len-i-1]; if (a == mirror[isdigit(b) ? b-'0'+'Z'-'A' : b-'A'] || mirror[isdigit(a) ? a-'0'+'Z'-'A' : a-'A'] == b) continue; ismirror = ismirpal = 0; if (a == b) continue; ismirror = ispalin = ismirpal = 0; break; } if (ismirpal == 1) { printf("%s -- is a mirrored palindrome.\n", string); return; } if (ismirror == 1) { printf("%s -- is a mirrored string.\n", string); return; } if (ispalin == 1) { printf("%s -- is a regular palindrome.\n", string); return; } printf("%s -- is not a palindrome.\n", string); } int main(void) { char string[30]; do { if (scanf("%s\n", string) == EOF) break; palindrome(string); } while (1); return(0); }