Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. bool A, D, O, B, E;
  6. int M, P, Ast;
  7. int Rez;
  8.  
  9. string S;
  10.  
  11. inline void mark(int);
  12. inline void unmark(int);
  13. inline bool check();
  14.  
  15. int main() {
  16.     cin >> S;
  17.     int n = S.size();
  18.  
  19.     if (n < 5) cout << "0";
  20.     else {
  21.         for (int i = 0; i < 5; ++i)
  22.             mark(i);
  23.  
  24.         Rez += check();
  25.  
  26.         cout << "Sirul: ";
  27.         for (int i = 0; i < 5; ++i)
  28.             cout << S[i];
  29.  
  30.         cout << "\nCu check-ul: " << check() << "\n\n";
  31.  
  32.         int j = 0;
  33.         for (int i = 5; i < n; ++i) {
  34.  
  35.             cout << "Sirul: ";
  36.             for (int p = i - 4; p <= i; ++p)
  37.                 cout << S[p];
  38.  
  39.             cout << "\nCu check-ul: " << check() << "\n\n";
  40.  
  41.             unmark(j); j++;
  42.             mark(i);
  43.  
  44.             Rez += check();
  45.         }
  46.  
  47.         cout << Rez;
  48.     }
  49.  
  50.     return 0;
  51. }
  52.  
  53. inline void mark(int poz) {
  54.     if (S[poz] == 'A' || S[poz] == 'a') A = true;
  55.     if (S[poz] == 'D' || S[poz] == 'd') D = true;
  56.     if (S[poz] == 'O' || S[poz] == 'o') O = true;
  57.     if (S[poz] == 'B' || S[poz] == 'b') B = true;
  58.     if (S[poz] == 'E' || S[poz] == 'e') E = true;
  59.  
  60.     if (S[poz] == '-') M++;
  61.     if (S[poz] == '+') P++;
  62.     if (S[poz] == '*') Ast++;
  63. }
  64.  
  65. inline void unmark(int poz) {
  66.     if (S[poz] == 'A' || S[poz] == 'a') A = false;
  67.     if (S[poz] == 'D' || S[poz] == 'd') D = false;
  68.     if (S[poz] == 'O' || S[poz] == 'o') O = false;
  69.     if (S[poz] == 'B' || S[poz] == 'b') B = false;
  70.     if (S[poz] == 'E' || S[poz] == 'e') E = false;
  71.  
  72.     if (S[poz] == '-') M--;
  73.     if (S[poz] == '+') P--;
  74.     if (S[poz] == '*') Ast--;
  75. }
  76.  
  77. inline bool check() {
  78.     bool a = A, d = D, o = O, b = B, e = E;
  79.     int m = M, p = P, ast = Ast;
  80.  
  81.     cout << "\nValoriile sunt:\n";
  82.     cout << a << ' ' << d << ' ' << o << ' ' <<  b << ' ' << e << ' ' << m << ' ' << p << ' ' << ast << "\n\n";
  83.  
  84.     if (a + m + ast == 0) return false;
  85.         else if (a) a = false;
  86.             else if (m) m--;
  87.                 else ast--;
  88.  
  89.     if (d + p + ast == 0) return false;
  90.         else if (d) d = false;
  91.             else if (p) p--;
  92.                 else ast--;
  93.  
  94.     if (o + m + ast == 0) return false;
  95.         else if (o) o = false;
  96.             else if (m) m--;
  97.                 else ast--;
  98.  
  99.     if (b + p + ast == 0) return false;
  100.         else if (b) b = false;
  101.             else if (p) p--;
  102.                 else ast--;
  103.  
  104.     if (e + m + ast == 0) return false;
  105.         else if (e) e = false;
  106.             else if (m) m--;
  107.                 else ast--;
  108.  
  109.     return true;
  110. }
  111.  
  112. /// ebodaE+m***++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement