fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. string pierwszyciag(string a)
  5. {
  6. string b;
  7. for(int i = 0; i < a.length(); i++)
  8. {
  9. if(a[i] != 64)
  10. {
  11. b += a[i];
  12. }
  13. else
  14. {
  15. break;
  16. }
  17. }
  18. return b;
  19. }
  20. string drugiciag(string a)
  21. {
  22. string b;
  23. int d;
  24. for(int i = 0; i < a.length(); i++)
  25. {
  26. if(a[i] == 64)
  27. {
  28. d = i;
  29. break;
  30. }
  31. }
  32. for(int i = d + 1; a.length(); i++)
  33. {
  34. if(a[i] != 46)
  35. {
  36. b += a[i];
  37. }
  38. else
  39. {
  40. break;
  41. }
  42. }
  43. return b;
  44. }
  45. string trzeciciag(string a)
  46. {
  47. string b, c;
  48. int d, e;
  49. for(int i = 0; i < a.length(); i++)
  50. {
  51. if(a[i] == 64)
  52. {
  53. d = i;
  54. break;
  55. }
  56. }
  57. for(int i = d + 1; i < a.length(); i++)
  58. {
  59. if(a[i] != 46)
  60. {
  61. b += a[i];
  62. }
  63. else
  64. {
  65. e = i;
  66. break;
  67. }
  68. }
  69. for(int i = e + 1; i < a.length(); i++)
  70. {
  71. if(a[i] != 46)
  72. {
  73. c += a[i];
  74. }
  75. }
  76. return c;
  77. }
  78. string trzeciciagzk(string a)
  79. {
  80. string b, c;
  81. int d, e;
  82. for(int i = 0; i < a.length(); i++)
  83. {
  84. if(a[i] == 64)
  85. {
  86. d = i;
  87. break;
  88. }
  89. }
  90. for(int i = d + 1; i < a.length(); i++)
  91. {
  92. if(a[i] != 46)
  93. {
  94. b += a[i];
  95. }
  96. else
  97. {
  98. e = i;
  99. break;
  100. }
  101. }
  102. for(int i = e + 1; i < a.length(); i++)
  103. {
  104. c += a[i];
  105. }
  106. return c;
  107. }
  108. int main() {
  109. int n;
  110. cin >> n;
  111. string email, ciag1, ciag2, ciag3, ciag4;
  112. getline(cin, email);
  113. bool prawidlowy = true;
  114. int malpy = 0, kropki = 0;
  115. for(int i = 0; i < n; i++)
  116. {
  117. getline(cin, email);
  118. for(int j = 0; j < email.length(); j++)
  119. {
  120. if(email[j] == '@')
  121. {
  122. malpy++;
  123. }
  124. if(email[j] == '.')
  125. {
  126. kropki++;
  127. }
  128. if(email[j] == 32)
  129. {
  130. prawidlowy = false;
  131. }
  132. if(email[j] == 46)
  133. {
  134. if(email[j-1] == 46 || email[j-1] == 64 || email[j+1] == 46 || email[j+1] == 64)
  135. {
  136. prawidlowy = false;
  137. }
  138. }
  139. if((email[j] >= 'a' && email[j] <= 'z') || (email[j] >= 'A' && email[j] <= 'Z') || (email[j] >= '0' && email[j] <= '9') || email[j] == '.' || email[j] == '_' || email[j] == '@')
  140. {
  141. ;
  142. }
  143. else
  144. {
  145. prawidlowy = false;
  146. }
  147. }
  148. if(email[0] == '@' || email[0] == '_')
  149. {
  150. prawidlowy = false;
  151. }
  152. if(malpy > 1 || malpy == 0)
  153. {
  154. prawidlowy = false;
  155. }
  156. if(kropki == 0)
  157. {
  158. prawidlowy = false;
  159. }
  160. if(prawidlowy)
  161. {
  162. ciag1 = pierwszyciag(email);
  163. ciag2 = drugiciag(email);
  164. ciag3 = trzeciciag(email);
  165. ciag4 = trzeciciagzk(email);
  166. for(int k = 0; k < ciag2.length(); k++)
  167. {
  168. if(ciag2[k] == '.')
  169. {
  170. prawidlowy = false;
  171. }
  172. }
  173. string p;
  174. for(int k = 0; k < ciag4.length(); k++)
  175. {
  176. if(ciag4[k] != '.')
  177. {
  178. p += ciag4[k];
  179. }
  180. else
  181. {
  182. if(p.length() > 3 || p.length() == 1 || p.length() == 0)
  183. {
  184. prawidlowy = false;
  185. p = "";
  186. }
  187. else
  188. {
  189. p = "";
  190. }
  191. }
  192. }
  193. if(ciag4[ciag4.length()-1] == '.')
  194. {
  195. prawidlowy = false;
  196. }
  197. if(ciag1.length() > 20 || ciag1.length() == 0 || ciag2.length() > 20 || ciag2.length() == 0 || ciag3.length() == 0 || ciag3.length() == 1)
  198. {
  199. prawidlowy = false;
  200. }
  201. }
  202.  
  203. // cout << "pierwszy ciag: " << ciag1 << "\n";
  204. // cout << "drugi ciag: " << ciag2 << "\n";
  205. // cout << "trzeci ciag: " << ciag3 << "\n";
  206. // cout << "czwarty ciag: " << ciag4 << "\n";
  207. if(prawidlowy) cout << "Tak\n";
  208. else cout << "Nie\n";
  209.  
  210. prawidlowy = true;
  211. malpy = 0;
  212. kropki = 0;
  213. }
  214. }
Success #stdin #stdout 0s 5620KB
stdin
7
a.l.g.orytm@edu.pl
1234@123.PLppp.pls.dsd.
mat h@edu.pl
algorytm@edu.pl
algoliga@algoliga.edu.pl
1234@123.PL
1234@123..pl
stdout
Tak
Nie
Nie
Tak
Tak
Tak
Nie