401 - Palindromes

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
    char str[30],str1[30],str2[30],str3[30];
    int i,a,b,len;
    while(gets(str))
    {
        len=strlen(str);
        strcpy(str1,str);
        strcpy(str3,str);
        reverse(str1,str1+len);
        if(strcmp(str1,str)==0)
        {
            b=0;
            for(i=0; i<len; i++)
            {
                if(str[i]=='1'||str[i]=='8'||str[i]=='A'||str[i]=='H'||str[i]=='I'||str[i]=='M'||str[i]=='O'||str[i]=='T'||str[i]=='U'||str[i]=='V'||str[i]=='W'||str[i]=='X'||str[i]=='Y')
                {
                    b++;
                }
            }
            if(b==len)
            {
                printf("%s -- is a mirrored palindrome.\n\n",str3);
                memset(str,'\0',sizeof(str));
                memset(str1,'\0',sizeof(str1));
                memset(str2,'\0',sizeof(str2));
                memset(str3,'\0',sizeof(str3));
            }
            else
            {
                printf("%s -- is a regular palindrome.\n\n",str3);
                memset(str,'\0',sizeof(str));
                memset(str1,'\0',sizeof(str1));
                memset(str2,'\0',sizeof(str2));
                memset(str3,'\0',sizeof(str3));
            }
        }
        else if(strcmp(str1,str)!=0)
        {
            for(i=0; i<len; i++)
            {
                if(str[i]=='2')
                {
                    str[i]='S';
                }
                else if(str[i]=='3')
                {
                    str[i]='E';
                }
                else if(str[i]=='5')
                {
                    str[i]='Z';
                }
                else if(str[i]=='J')
                {
                    str[i]='L';
                }
            }
            strcpy(str2,str);
            reverse(str2,str2+len);
            if(strcmp(str2,str)==0)
            {
                a=0;
                for(i=0; i<len; i++)
                {
                    if(str[i]=='S'||str[i]=='E'||str[i]=='Z'||str[i]=='L'||str[i]=='1'||str[i]=='8'||str[i]=='A'||str[i]=='H'||str[i]=='I'||str[i]=='M'||str[i]=='O'||str[i]=='T'||str[i]=='U'||str[i]=='V'||str[i]=='W'||str[i]=='X'||str[i]=='Y')
                    {
                        a++;
                    }
                }
                if(a==len)
                {
                    printf("%s -- is a mirrored string.\n\n",str3);
                    memset(str,'\0',sizeof(str));
                    memset(str1,'\0',sizeof(str1));
                    memset(str2,'\0',sizeof(str2));
                    memset(str3,'\0',sizeof(str3));
                }
                else
                {
                    printf("%s -- is not a palindrome.\n\n",str3);
                    memset(str,'\0',sizeof(str));
                    memset(str1,'\0',sizeof(str1));
                    memset(str2,'\0',sizeof(str2));
                    memset(str3,'\0',sizeof(str3));
                }
            }
            else
            {
                printf("%s -- is not a palindrome.\n\n",str3);
                memset(str,'\0',sizeof(str));
                memset(str1,'\0',sizeof(str1));
                memset(str2,'\0',sizeof(str2));
                memset(str3,'\0',sizeof(str3));
            }
        }
    }
    return 0;
}

0 comments: (+add yours?)