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. int main() {
  79. int n;
  80. cin >> n;
  81. string email, ciag1, ciag2, ciag3;
  82. getline(cin, email);
  83. bool prawidlowy = true;
  84. int malpy = 0, kropki = 0;
  85. for(int i = 0; i < n; i++)
  86. {
  87. getline(cin, email);
  88. for(int j = 0; j < email.length(); j++)
  89. {
  90. if(email[j] == '@')
  91. {
  92. malpy++;
  93. }
  94. if(email[j] == '.')
  95. {
  96. kropki++;
  97. }
  98. if(email[j] == 32)
  99. {
  100. prawidlowy = false;
  101. }
  102. if(email[j] == 46)
  103. {
  104. if(email[j-1] == 46 || email[j-1] == 64 || email[j+1] == 46 || email[j+1] == 64)
  105. {
  106. prawidlowy = false;
  107. }
  108. }
  109. 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] == '@')
  110. {
  111. ;
  112. }
  113. else
  114. {
  115. prawidlowy = false;
  116. }
  117. }
  118. if(email[0] == '@' || email[0] == '_')
  119. {
  120. prawidlowy = false;
  121. }
  122. if(malpy > 1 || malpy == 0)
  123. {
  124. prawidlowy = false;
  125. }
  126. if(kropki == 0)
  127. {
  128. prawidlowy = false;
  129. }
  130. if(prawidlowy)
  131. {
  132. ciag1 = pierwszyciag(email);
  133. ciag2 = drugiciag(email);
  134. ciag3 = trzeciciag(email);
  135. for(int k = 0; k < ciag1.length(); k++)
  136. {
  137. if(ciag1[k] == '.')
  138. {
  139. prawidlowy = false;
  140. }
  141. }
  142. for(int k = 0; k < ciag2.length(); k++)
  143. {
  144. if(ciag2[k] == '.')
  145. {
  146. prawidlowy = false;
  147. }
  148. }
  149. string p;
  150. for(int k = 0; k < ciag3.length(); k++)
  151. {
  152. if(ciag1[k] != 46)
  153. {
  154. p += ciag1[k];
  155. }
  156. else
  157. {
  158. if(p.length() > 3 || p.length() == 1)
  159. {
  160. prawidlowy = false;
  161. p = "";
  162. }
  163. else
  164. {
  165. p = "";
  166. }
  167. }
  168. }
  169. if(ciag1.length() > 20 || ciag1.length() == 0 || ciag2.length() > 20 || ciag2.length() == 0 || ciag3.length() == 0 || ciag3.length() == 1)
  170. {
  171. prawidlowy = false;
  172. }
  173. }
  174.  
  175. // cout << "pierwszy ciag: " << ciag1 << "\n";
  176. // cout << "drugi ciag: " << ciag2 << "\n";
  177. // cout << "trzeci ciag: " << ciag3 << "\n";
  178. if(prawidlowy) cout << "Tak\n";
  179. else cout << "Nie\n";
  180.  
  181. prawidlowy = true;
  182. malpy = 0;
  183. kropki = 0;
  184. }
  185. }
Success #stdin #stdout 0.01s 5596KB
stdin
5
mat h@edu.pl
algorytm@edu.pl
algoliga@algoliga.edu.pl
1234@123.PL
1234@123..pl
stdout
Nie
Tak
Tak
Tak
Nie