#include #include #define MAXLINE 23 char s[MAXLINE]; int d; int typ; int delka() { d = 0; while (s[d] != '\0' && s[d] != '\n') ++d; if (s[d] == '\n') s[d]='\0'; return d; } #define REG_PAL 1 #define MIR_STR 2 char rez1[] = " -- is not a palindrome."; char rez2[] = " -- is a regular palindrome."; char rez3[] = " -- is a mirrored string."; char rez4[] = " -- is a mirrored palindrome."; int isRegPal() { int i=0; int j=d-1; while ( (i <= j) && (s[i] == s[j]) ) { ++i; --j; } if (i > j) typ += REG_PAL; return (0); } /* isRegPal */ char nor[] = { "123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ" }; char rev[] = { "1SE Z 8 A 3 HIL JM O 2TUVWXY5" }; int isMirStr() { int i=0; int j=d-1; while ( (i <= j) && (nor[(int)(s[i]-'1')] == rev[(int)(s[j]-'1')]) ) { ++i; --j; } /* printf(" - i=%d j=%d '%c' '%c' %d %d - ", i, j, nor[(int)(s[i]-'1')], rev[(int)(s[j]-'1')] , (int)(s[i]-'1'), (int)(s[j]-'1') ); */ if (i > j) typ += MIR_STR; return (0); } /* isMirPal */ char *rez; int main(int argc, char **argv) { while ( (fgets(s, MAXLINE, stdin)) != NULL ) { delka(); typ=0; isRegPal(); isMirStr(); switch ( typ ) { case 0: rez = rez1; break; case 1: rez = rez2; break; case 2: rez = rez3; break; case 3: rez = rez4; break; } printf("%s%s\n", s, rez); } /* while */ return (0); } /* main */