Advertisement
teopalmer

06_1

May 24th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char *my_strpbrk(char a[], char b[])
  5. {
  6.     char *ans = NULL;
  7.     int len_b = strlen(b);
  8.     int len_a = strlen(a);
  9.     for (int i = 0; i < len_b; ++i)
  10.     {
  11.         int cou = 0;
  12.         while (cou < len_a && a[cou] != b[i])
  13.         {
  14.             ++cou;
  15.         }
  16.         if (cou < len_a && (!ans || a + cou < ans))
  17.         {
  18.             ans = a + cou;
  19.         }
  20.     }
  21.     return ans;
  22. }
  23.  
  24. size_t my_strspn(char a[], char b[])
  25. {
  26.     size_t ans = 0;
  27.     int len_b = strlen(b);
  28.     int len_a = strlen(a);
  29.     int flag = 1;
  30.     int cou = -1;
  31.     while (cou < len_a - 1 && flag)
  32.     {
  33.         ++cou;
  34.         int cou2 = 0;
  35.         while (cou2 < len_b && a[cou] != b[cou2])
  36.         {
  37.             ++cou2;
  38.         }
  39.         if (cou2 < len_b)
  40.         {
  41.             ++ans;
  42.         }
  43.         else
  44.         {
  45.             flag = 0;
  46.         }
  47.     }
  48.     return ans;
  49. }
  50.  
  51. size_t my_strcspn(char a[], char b[])
  52. {
  53.     int len_b = strlen(b);
  54.     int len_a = strlen(a);
  55.     size_t ans = len_a;
  56.     for (int i = 0; i < len_b; ++i)
  57.     {
  58.         int cou = 0;
  59.         while (cou < len_a && a[cou] != b[i])
  60.         {
  61.             ++cou;
  62.         }
  63.         if (cou < ans)
  64.         {
  65.             ans = cou;
  66.         }
  67.     }
  68.     return ans;
  69. }
  70.  
  71. char *my_strchr(char a[], int sym)
  72. {
  73.     int len_a = strlen(a);
  74.     if (sym == '\0')
  75.     {
  76.         return a + len_a;
  77.     }
  78.     char *ans = NULL;
  79.     int cou = 0;
  80.     while (cou < len_a && a[cou] != sym)
  81.     {
  82.         ++cou;
  83.     }
  84.     if (cou < len_a && (!ans || cou < ans - a))
  85.     {
  86.         ans = a + cou;
  87.     }
  88.     return ans;
  89. }
  90.  
  91. char *my_strrchr(char a[], int sym)
  92. {
  93.     int len_a = strlen(a);
  94.     if (sym == '\0')
  95.     {
  96.         return a + len_a;
  97.     }
  98.     char *ans = NULL;
  99.     int cou = len_a - 1;
  100.     while (cou >= 0 && a[cou] != sym)
  101.     {
  102.         --cou;
  103.     }
  104.     if (cou >= 0 && (!ans || cou > ans - a))
  105.     {
  106.         ans = a + cou;
  107.     }
  108.     return ans;
  109. }
  110.  
  111.  
  112. int main()
  113. {
  114.     char a[] = "bbbbbbbCcc";
  115.     char b[] = "acc";
  116.     char c = 'c';
  117.     if (my_strpbrk(a, b) != strpbrk(a, b))
  118.     {
  119.         printf("Error!");
  120.         return -1;
  121.     }
  122.     if (my_strspn(a, b) != strspn(a, b))
  123.     {
  124.         printf("Error!");
  125.         return -1;
  126.     }
  127.     if (my_strcspn(a, b) != strcspn(a, b))
  128.     {
  129.         printf("Error!");
  130.         return -1;
  131.     }
  132.     if (my_strchr(a, c) != strchr(a, c))
  133.     {
  134.         printf("Error!");
  135.         return -1;
  136.     }
  137.     if (my_strrchr(a, c) != strrchr(a, c))
  138.     {
  139.         printf("Error!");
  140.         return -1;
  141.     }
  142.     char a1[] = "bbabbbababCcc";
  143.     char b1[] = "acbc";
  144.     char c1 = 'd';
  145.     if (my_strpbrk(a1, b1) != strpbrk(a1, b1))
  146.     {
  147.         printf("Error!");
  148.         return -1;
  149.     }
  150.     if (my_strspn(a1, b1) != strspn(a1, b1))
  151.     {
  152.         printf("Error!");
  153.         return -1;
  154.     }
  155.     if (my_strcspn(a1, b1) != strcspn(a1, b1))
  156.     {
  157.         printf("Error!");
  158.         return -1;
  159.     }
  160.     if (my_strchr(a1, c1) != strchr(a1, c1))
  161.     {
  162.         printf("Error!");
  163.         return -1;
  164.     }
  165.     if (my_strrchr(a1, c1) != strrchr(a1, c1))
  166.     {
  167.         printf("Error!");
  168.         return -1;
  169.     }
  170.     printf("OK!");
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement