Guest User

Untitled

a guest
Oct 18th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define MAX 255
  5. struct data
  6. {
  7. bool is_mir;
  8. bool is_par;
  9. char str1[MAX];
  10. char str2[MAX];
  11. }simple;
  12. void judgement(char ch,int len1,int len2);
  13. int main()
  14. {
  15. int i,j;
  16. int len;
  17. char str[MAX];
  18. while(gets(str)!=NULL){
  19. len=strlen(str);
  20. for(i=len-1;i>=0;i--){
  21. judgement(str[i],len-1,i);
  22. }
  23. if(strcmp(simple.str1,str)==0) //去比對created的mirror string有無符合輸入字串,有則設is_mir為1否則為0
  24. simple.is_mir=1;
  25. else
  26. simple.is_mir=0;
  27.  
  28. if(strcmp(simple.str2,str)==0) //去比對created的palindrome string有無符合輸入字串,有則設is_par為1否則為0
  29. simple.is_par=1;
  30. else
  31. simple.is_par=0;
  32. if(simple.is_mir==1&&simple.is_par==1)printf("%s -- is a mirrored palindrome.\n",str); //兩者皆符合則display『字串 -- is a mirrored palindrome.』
  33.  
  34. else if(simple.is_mir==1&&simple.is_par==0)printf("%s -- is a mirrored string.\n",str); //符合鏡像則display『字串 -- is a mirrored string.』
  35.  
  36. else if(simple.is_mir==0&&simple.is_par==1)printf("%s -- is a regular palindrome.\n",str); //符合迴文則display『字串 -- is a regular palindrome.』
  37.  
  38. else printf("%s -- is not a palindrome.\n",str); //皆無則display 『字串 -- is not a palindrome.』
  39. printf("\n");
  40. simple.is_mir=0; //把bool的is_mir重新設回0
  41. simple.is_par=0; //把bool的is_par重新設回0
  42. memset(simple.str1,0,len); //string lib,把str1長度為len的內容都清空
  43. memset(simple.str2,0,len); //string lib,把str2長度為len的內容都清空
  44. }
  45. return 0;
  46. }
  47.  
  48. void judgement(char ch,int len1,int len2)
  49. {
  50. if(ch=='A'||ch=='H'||ch=='I'||ch=='M'||ch=='O'||ch=='T'||ch=='U'||ch=='V'||ch=='W'||ch=='X'||ch=='Y'||ch=='1'||ch=='8')
  51. {
  52. simple.str1[len1-len2]=ch;
  53. }
  54. else if(ch=='E'||ch=='3')
  55. {
  56. if(ch=='E')
  57. simple.str1[len1-len2]='3';
  58. else
  59. simple.str1[len1-len2]='E';
  60. }
  61. else if(ch=='J'||ch=='L')
  62. {
  63. if(ch=='J')
  64. simple.str1[len1-len2]='L';
  65. else
  66. simple.str1[len1-len2]='J';
  67. }
  68. else if(ch=='S'||ch=='2')
  69. {
  70. if(ch=='S')
  71. simple.str1[len1-len2]='2';
  72. else
  73. simple.str1[len1-len2]='S';
  74. }
  75. else if(ch=='Z'||ch=='5')
  76. {
  77. if(ch=='Z')
  78. simple.str1[len1-len2]='5';
  79. else
  80. simple.str1[len1-len2]='Z';
  81. }
  82. else
  83. {
  84. simple.str1[len1-len2]=0; //記得設成空字元
  85. }
  86. simple.str2[len1-len2]=ch; //回文皆倒過來指派(如長度為9[0~8],其中index為8(end)的話回文要指派到0(start)來建立
  87. }
Add Comment
Please, Sign In to add comment