Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. //Вычисление длины строки
  2. unsigned strlen(const char *str)
  3. {
  4.     unsigned n = 0;
  5.     for (; *str != 0; str++) {
  6.         n++;
  7.     }
  8.     return n;
  9. }
  10.  
  11. //Посимвольное сравнение части text строки и паттерна целиком
  12.  
  13. bool check(const char *text, const char *pattern) {
  14.     for (; *pattern != 0; pattern++, text++) {
  15.         if (*text == *pattern) {
  16.             continue;
  17.         }
  18.         else {
  19.             return false;
  20.         }
  21.     }
  22.     return true;
  23. }
  24.  
  25. int strstr1(const char *text, const char *pattern)
  26. {
  27.     if (strlen(pattern) != 0) {
  28.         int res = 0;
  29.         int text_len = strlen(text);
  30.         int pattern_len = strlen(pattern);     
  31.         for (int i = 0; i < text_len - (text_len % pattern_len); i++) { //"Priv PrPr" "riv PrPr" "iv PrPr" ...
  32.             if (check(text + i, pattern) == true) {                     //и это сравнивается с "Pr"
  33.                 res++;                                                  //text_len - (text_len % pattern_len) раз
  34.             }
  35.         }
  36.         return res;
  37.     }
  38.     return strlen(text);
  39. }
  40.  
  41. int main()
  42. {  
  43.     const char str1[25] = "Priv PrPr";
  44.     const char str2[] = "Pr";
  45.    
  46.     int res = strstr1(str1, str2);
  47.     std::cout << res << std::endl;
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement