Advertisement
Mihajlo_K

8.3 Бришење на текстуална низа

Mar 19th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. /* Да се напише функција со која од дадена текстуална низа s1, зададена како прв аргумент на функцијата, ќе се избрише првото појавување на текстуалната низа s2 зададена како втор аргумент на функцијата. Ако втората низа s2 не е подстринг на s1, тогаш како резултат се враќа 0, а во спротивно 1. Задачата да се реши со помош на покажувачи. */
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #define MAX 100
  7.  
  8. int del(char *a, char *b)
  9. {
  10.     int t = strlen(b), s = 0, r = strlen(a), x = 0;
  11.     int i = 0, j = 0, k = 0;
  12.     while(*(a+i) != '\0')
  13.     {
  14.         if(*(a+i) == *(b+j))
  15.         {
  16.             int u = i;
  17.             while(*(a+u) != '\0')
  18.             {
  19.                 if(u+1 == r-x)
  20.                 {
  21.                     *(a+u) = '\0';
  22.                     break;
  23.                 }
  24.                 else
  25.                 {
  26.                     *(a+u) = *(a+(u+1));
  27.                 }
  28.                 u++;
  29.             }
  30.             s++;
  31.             k = 1;
  32.             j++;
  33.             i--;
  34.             x++;
  35.         }
  36.         else
  37.         {
  38.             if(*(b+j) == '\0')
  39.             {
  40.                 if(s == t)
  41.                 {
  42.                     return 1;
  43.                 }
  44.             }
  45.             else
  46.                 s = 0; j = 0;
  47.         }
  48.         i++;
  49.     }
  50.     if(k == 0)
  51.     {
  52.         return 0;
  53.     }
  54. }
  55. int main()
  56. {
  57.     int i;
  58.     char s1[MAX], s2[MAX], ch;
  59.     for(i = 0; i < MAX && (ch = getchar())!='\n'; i++)
  60.     {
  61.         s1[i] = ch;
  62.     }
  63.     s1[i] = '\0';
  64.     for(i = 0; i < MAX && (ch = getchar())!='\n'; i++)
  65.     {
  66.         s2[i] = ch;
  67.     }
  68.     s2[i] = '\0';
  69.  
  70.     if(del(&s1, &s2) == 1)
  71.     {
  72.         printf("%s\n", s1);
  73.     }
  74.     else
  75.         printf("Ne e najdena niza.");
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement