fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. bool dobrylogin(string s)
  7. {
  8. int k, dl = s.length();
  9.  
  10. if (dl < 3 or dl > 12)
  11. return false;
  12.  
  13. for (int i = 0; i < dl; ++i)
  14. {
  15. k = (int)s[i];
  16. if (!((k >= 97 and k <= 122) or (k >= 65 and k <= 90) or (k >= 48 and k <= 57)))
  17. return false;
  18. }
  19.  
  20. return true;
  21. }
  22.  
  23. bool dobrehaslo(string s)
  24. {
  25. int k, dl = s.length();
  26.  
  27. if (dl < 5 or dl > 15)
  28. return false;
  29.  
  30. bool duza, mala, cyfra, specjalny;
  31. duza = mala = cyfra = specjalny = false;
  32.  
  33. for (int i = 0; i < dl; ++i)
  34. {
  35. k = (int)s[i];
  36. if (k >= 97 and k <= 122)
  37. {
  38. mala = true;
  39. continue;
  40. }
  41. if (k >= 65 and k <= 90)
  42. {
  43. duza = true;
  44. continue;
  45. }
  46. if (k >= 48 and k <= 57)
  47. {
  48. cyfra = true;
  49. continue;
  50. }
  51. specjalny = true;
  52. }
  53.  
  54. if (mala and duza and cyfra and specjalny)
  55. return true;
  56. else
  57. return false;
  58. }
  59.  
  60. int main()
  61. {
  62. string typ, l, h;
  63. int x, k;
  64. vector <string> login;
  65. vector <string> haslo;
  66. bool powtorka, istnieje;
  67.  
  68. cin >> typ >> x;
  69. while (!cin.eof())
  70. {
  71. if (typ[0] == 'r') //rejestracja
  72. while (x)
  73. {
  74. cin >> l >> h;
  75. powtorka = false;
  76. if (dobrylogin(l) and dobrehaslo(h)) //warunek 1: poprawny login i hasło
  77. {
  78. for (int i = 0; i < login.size(); ++i) //warunek 2: login się nie powtarza
  79. if (l == login[i])
  80. {
  81. cout << "Login zajety" << endl;
  82. powtorka = true;
  83. break;
  84. }
  85. if (!powtorka) //jeśli się nie powtarza: zarejestruj
  86. {
  87. login.push_back(l);
  88. haslo.push_back(h);
  89. cout << "Zarejestrowano" << endl;
  90. }
  91. }
  92. else //jeżeli złe niepoprawny format hasła lub loginu: błąd
  93. cout << "Blad" << endl;
  94. x--;
  95. }
  96. else //logowanie
  97. while (x)
  98. {
  99. cin >> l >> h;
  100. istnieje = false;
  101. for (int i = 0; i < login.size(); ++i)
  102. if (l == login[i])
  103. {
  104. istnieje = true;
  105. k = i;
  106. break;
  107. }
  108. if (istnieje)
  109. {
  110. if (h == haslo[k])
  111. cout << "Zalogowano" << endl;
  112. else
  113. cout << "Zle haslo" << endl;
  114. }
  115. else
  116. cout << "Konto nie istnieje" << endl;
  117.  
  118. x--;
  119. }
  120. cin >> typ >> x;
  121. }
  122. return 0;
  123. }
  124.  
Success #stdin #stdout 0s 16072KB
stdin
register 3
bajtek13 Haslo123@
BITEK 123456789
bajtek13 bajteK55%
login 5
bajtek13 bajteK55%
bajtek13 Haslo123@
BITEK 123456789
bajtocjusz haselko49
bitariusz 123haSlo!@#
register 1
BITEK Dobrehaslo1!
login 1
BITEK Dobrehaslo1!
stdout
Zarejestrowano
Blad
Login zajety
Zle haslo
Zalogowano
Konto nie istnieje
Konto nie istnieje
Konto nie istnieje
Zarejestrowano
Zalogowano