Advertisement
juanjo12x

UVA_401_Palindromes

Aug 14th, 2014
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <string>
  6. #include <cctype>
  7. #include <stack>
  8. #include <queue>
  9. #include <list>
  10. #include <vector>
  11. #include <map>
  12. #include <set>
  13. #include <sstream>
  14. #include <stdlib.h>
  15. #include <cmath>
  16. #define FOR(i,A) for(typeof (A).begin() i = (A).begin() ; i != (A).end() ; i++)
  17. #define mp make_pair
  18. #define debug( x ) cout << #x << " = " << x << endl
  19. #define clr(v,x) memset( v, x , sizeof v )
  20. #define all(x) (x).begin() , (x).end()
  21. #define rall(x) (x).rbegin() , (x).rend()
  22. #define TAM 110
  23.  
  24. using namespace std;
  25.  
  26. typedef pair<int,int> ii ;
  27. typedef long long ll ;
  28. typedef long double ld ;
  29. typedef pair<int,ii> pii ;
  30. char cad[1000];
  31. bool ispalindrome(){
  32.   string str=string(cad);
  33.   string tmp = str;
  34.   reverse(tmp.begin(),tmp.end());
  35.   if(str == tmp)
  36.    return true;
  37.    return false;
  38. }
  39. char reversa(char car){
  40.    char car1;
  41.    if(car=='A' || car=='H' || car=='I' || car== 'O' || car=='M' || car=='T'
  42.    || car=='U'|| car=='V' || car=='W'|| car=='X' || car=='Y' || car=='1' || car=='8') return car;
  43.    else if(car=='E') {
  44.     car1='3'; return car1;
  45.    }else if(car=='3'){
  46.     car1='E'; return car1;
  47.    }else if(car=='J'){
  48.     car1='L'; return car1;
  49.    }else if(car=='L'){
  50.     car1='J';return car1;
  51.    }else if(car=='Z'){
  52.     car1='5';return car1;
  53.    }else if(car=='2'){
  54.     car1='S' ;return car1;
  55.    }else if(car=='5'){
  56.     car1='Z';return car1;
  57.    }else if(car=='S'){
  58.     car1='2'; return car1;
  59.    }else{
  60.     car1='0';return car1;
  61.    }
  62. }
  63. bool ismirror(){
  64.     int n=strlen(cad);char cad1[1000];char aux;
  65.     for(int i=0;i<n;i++){
  66.         aux=reversa(cad[i]);
  67.         if(aux!='0') cad1[i]=aux;
  68.         else return false;
  69.     }
  70.     cad1[n]='\0';
  71.     string str=string(cad1);
  72.     string str1=str;
  73.     reverse(str1.begin(),str1.end());string str2=string(cad);
  74.     if(str1==str2) return true;
  75.     else return false;
  76. }
  77. int main() {
  78.     int cont=1;bool ispali,ismirrored;
  79.     while(gets(cad)){
  80.        
  81.         ispali=ispalindrome();
  82.         ismirrored=ismirror();
  83.         if(ispali && ismirrored){
  84.             printf("%s -- is a mirrored palindrome.\n",cad);
  85.         }else if(ispali && !ismirrored){
  86.             printf("%s -- is a regular palindrome.\n",cad);
  87.         }else if(!ispali && ismirrored){
  88.             printf("%s -- is a mirrored string.\n",cad);
  89.         }else{
  90.             printf("%s -- is not a palindrome.\n",cad);
  91.         }
  92.         cont++;
  93.         cad[0]='\0';
  94.         printf("\n");
  95.     }
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement