SHARE
TWEET

Untitled

a guest Nov 19th, 2019 90 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. int str_len(char* str);//количество символов в строке
  3. int str_cmp(char* str1, char* str2);//сравнивает 2 строки
  4. char* str_cpy(char* str1, char* str2);//копирует из 1 во 2
  5. char* str_cat(char* str1, char* str2);//добавляет к первой вторую
  6. int chr_str(char* str,char ch);//поиск символа в строке
  7. char* str_str(char* str1, char* str2);//поиск строки в строке ,возвращает адрес начала повторения       ???
  8. int sum_of_decimals(char* str);//oo111ooo111->222                                                       ???
  9. int sum_of_digits(char* str);//ooo123oo4->10
  10. int words_count(char* str);// подсчет слов  с учетом разделителей ";,.!_-                               ???
  11. int longest(char* str);//самое длинное слово                                                            ???
  12. int shortest(char* str);//само короткое слово
  13. char* remove_dup(char* str);//удаляет повторение
  14. char* remove_char(char* str, char ch);//удаляет выборочный символ
  15. char* reverse(char* str);//переворот строки
  16. char* reverse_sub(char* str, int start, int end);//переворот подстроки
  17. void swap(char* a, char* b);//обычный свап лол
  18. char* reverse_words(char* str);
  19. void print_words(char* str);//каждое слово с новой строки
  20. char* s_gets_c(char* str, int size);
  21. char* s_gets(char* str, int size);
  22.                                                            
  23.  
  24.  
  25. int main()
  26. {
  27.     char ch = 'a';
  28.     char str1[100] = "hkav56o44lox";
  29.     char str2[100] = "kavo";
  30.     char str3[100] = "Hello.My name is Ilya t da";
  31.     //printf("symbols in string %d", str_len(str2));
  32.     //str_cpy(str1, str2);
  33.     //str_cat(str1, str2);
  34.     //printf("%d",str_cmp(str1, str2));
  35.     //printf("%s", str1);
  36.     //printf("%d",chr_str(str1, ch));
  37.     //printf("%d", str_str(str1, str2));                  
  38.     //printf("%d", sum_of_digits(str1));
  39.     //printf("%d", sum_of_decimals(str1));              
  40.     //printf("%d", words_count(str3));                  
  41.     //printf("%d", longest(str3));
  42.     //printf("%d", shortest(str3));
  43.     //printf("%s", remove_char(str3,ch));
  44.     //printf("%s", reverse(str1));
  45.     print_words(str3);
  46.     return 0;
  47. }
  48.  
  49. int str_len(char* str)
  50. {
  51.     int i = 0;
  52.     while (str[i])
  53.     {
  54.         i++;
  55.     }
  56.     return i;
  57. }
  58.  
  59.  
  60.  
  61. char* str_cpy(char* str1, char* str2)
  62. {
  63.     int i = 0;
  64.     while (str2[i])
  65.     {
  66.         str1[i] = str2[i++];
  67.  
  68.     }
  69.     str1[i] = '\0';
  70.  
  71.     return str1;
  72. }
  73.  
  74. char* str_cat(char* str1, char* str2)
  75. {
  76.     int i = 0,j = 0;
  77.     while (str1[i])
  78.     {
  79.         i++;
  80.     }
  81.     while (str2[j])
  82.     {
  83.         str1[i + j] = str2[j];
  84.         j++;
  85.     }
  86.     return str1;
  87. }
  88. int str_cmp(char* str1, char* str2) {
  89.     int i = 0;
  90.     while (str1[i] && str2[i]) {
  91.         i++;
  92.     }
  93.     if ((str1[i] - str2[i])) return 1;  else return 0;
  94. }
  95.  
  96. int chr_str(char* str, char ch)
  97. {
  98.     int i = 0;
  99.     while (str[i]) {
  100.         if (str[i] == ch)
  101.         {
  102.             return i;
  103.         }
  104.         else i++;
  105.     }
  106.     return -1;
  107. }
  108.  
  109. char* str_str(char* str1, char* str2)
  110. {
  111.     int i = 0, j = 0, flag = 1;
  112.     while (str1[i])
  113.     {
  114.         flag = 1;
  115.         j = 0;
  116.         while (str2[j])
  117.         {
  118.             if (str1[i+j]!=str2[j])
  119.             {
  120.                 flag = 0;
  121.             }
  122.             j++;
  123.         }
  124.         if (flag) return (&str1[i]);
  125.         i++;
  126.     }
  127.  
  128.     return NULL;
  129. }
  130.  
  131. int sum_of_digits(char* str)
  132. {
  133.     int sum=0, i=0;
  134.         while (str[i])
  135.         {
  136.             if ((str[i]>='0')&&(str[i]<='9'))
  137.             {
  138.                 sum = sum + (str[i] - '0');
  139.             }
  140.             i++;
  141.         }
  142.         return sum;
  143. }
  144.  
  145. int sum_of_decimals(char* str)
  146. {
  147.     int sum = 0, i = 0, dec =0;
  148.     while (str[i])
  149.     {
  150.         if ((str[i] >= '0') && (str[i] <= '9'))
  151.         {
  152.             dec *= 10;
  153.             dec += (str[i] - '0');
  154.         }
  155.         else
  156.         {
  157.             sum += dec;
  158.             dec = 0;
  159.         }
  160.         i++;
  161.        
  162.     }
  163.     sum += dec;
  164.     return sum;
  165. }
  166.  
  167. int words_count(char* str)
  168. {
  169.     int i = 0, counter = 0, in_word = 1;
  170.     char sep[]= "., \n\t()!?";
  171.     while (str[i])
  172.     {
  173.         if ((chr_str(sep, str[i])) != -1)
  174.         {
  175.             if (in_word)
  176.             {
  177.                 counter++;
  178.                 in_word = 0;
  179.             }
  180.         }
  181.             else
  182.             {
  183.                 in_word = 1;
  184.             }
  185.             i++;
  186.        
  187.     }
  188.            if (in_word)
  189.            {
  190.                counter++;
  191.            }
  192.     return counter;
  193. }
  194.  
  195. int longest(char* str)
  196. {
  197.     int i = 0, max_len = 0, current = 0, in_word = 1;
  198.     char sep[] = "., \n\t()!?";
  199.     while (str[i])
  200.     {
  201.         if ((chr_str(sep, str[i])) != -1)
  202.         {
  203.             if (in_word)
  204.             {
  205.                 if (current > max_len)
  206.                 {
  207.                     max_len = current;
  208.                 }
  209.                 current = 0;
  210.                 in_word = 0;
  211.             }
  212.         }
  213.         else
  214.         {
  215.             current++;
  216.             in_word = 1;
  217.         }
  218.         i++;
  219.     }
  220.     if (in_word)
  221.     {
  222.         if (current > max_len)
  223.         {
  224.             current = max_len;
  225.         }
  226.     }
  227.     return max_len;
  228. }
  229.  
  230. int shortest(char* str)
  231. {
  232.     int i = 0, min_len =100, in_word = 1, current = 0;
  233.     char sep[] = "., \n\t()!?";
  234.     while (str[i])
  235.     {
  236.         if ((chr_str(sep, str[i])) != -1)
  237.         {
  238.             if (in_word)
  239.             {
  240.                 if (current < min_len)
  241.                 {
  242.                     min_len = current;
  243.                 }
  244.                 current = 0;
  245.                 in_word = 0;
  246.             }
  247.         }
  248.         else
  249.         {
  250.             current++;
  251.             in_word = 1;
  252.         }
  253.         i++;
  254.     }
  255.     if (in_word)
  256.     {
  257.         if (current < min_len)
  258.         {
  259.             min_len = current;
  260.         }
  261.     }
  262.     return min_len;
  263. }
  264.  
  265. char* remove_char(char* str, char ch)
  266. {
  267.     int i = 0,j=0;
  268.     while (str[i])
  269.     {
  270.         if (str[i] != ch)
  271.         {
  272.             str[j] = str[i];
  273.             j++;
  274.         }
  275.         i++;
  276.     }
  277.     str[j] = '\0';
  278.     return str;
  279. }
  280.  
  281. char* reverse_sub(char* str, int start, int end)
  282. {
  283.     while (start < end)
  284.     {
  285.         swap(str + start++, str + end--);
  286.     }
  287.     return str;
  288. }
  289.  
  290. void swap(char* a, char* b)
  291. {
  292.     char temp = *a;
  293.     *a = *b;
  294.     *b = temp;
  295.     return;
  296. }
  297.  
  298. char* reverse(char* str)
  299. {
  300.     return reverse_sub(str, 0, str_len(str) - 1);
  301. }
  302.  
  303. char* reverse_words(char* str)
  304. {
  305.     int i = 0, in_word = 1;start=0
  306.     char sep[] = "., \n\t()!?";
  307.     while (str[i])
  308.     {
  309.         if ((chr_str(sep, str[i])) != -1)
  310.         {
  311.             if (in_word)
  312.             {
  313.                 reverse_sub(str, start, i - 1);
  314.                 in_word = 0;
  315.             }
  316.         }
  317.         else
  318.         {
  319.             if (!in_word)
  320.             {
  321.                 start = i
  322.             }
  323.             in_word = 1;
  324.         }
  325.         i++;
  326.     }
  327.     if (in_word)
  328.     {
  329.         reverse_sub(str, start, i - 1);
  330.     }
  331.     return str;
  332. }
  333.  
  334. char* remove_dup(char* str)
  335. {
  336.     int i = 0, j = 0,flag=1, count = 0;
  337.     while (str[i])
  338.     {
  339.         j = 0;
  340.         flag = 1;
  341.         while (j < count)
  342.         {
  343.             if (str[i] == str[j])
  344.             {
  345.                 flag = 0;
  346.                 break;
  347.             }
  348.             j++;
  349.         }
  350.         if (flag)
  351.         {
  352.             str[count] = str[i];
  353.             count++;
  354.         }
  355.         i++;
  356.     }
  357.     str[count] = '\0';
  358.     return str;
  359. }
  360.  
  361. void print_words(char* str)
  362. {
  363.     int i = 0, in_word = 1;
  364.     char sep[] = "., \n\t()!?";
  365.     while (str[i])
  366.     {
  367.         if ((chr_str(sep, str[i])) != -1)
  368.         {
  369.             if (in_word)
  370.             {
  371.              putchar('\n');
  372.              in_word = 0;
  373.             }
  374.         }
  375.         else
  376.         {
  377.             putchar(str[i])
  378.             in_word = 1;
  379.         }
  380.         i++;
  381.     }
  382.     if (in_word)
  383.     {
  384.         putchar('\n');
  385.     }
  386.     return;
  387. }
  388.  
  389. char* s_gets(char* str, int size)
  390. {
  391.     if (!fgets(str, size, stdin)) { return NULL; }
  392.     int i = 0, flag = 1;
  393.     while (str[i]!='\0')
  394.     {
  395.         if (str[i] == '\n')
  396.         {
  397.             flag = 0;
  398.             break;
  399.         }
  400.         i++;
  401.     }
  402.     str[i] = '\0';
  403.     if (flag)
  404.     {
  405.         while (getchar() != '\n');
  406.     }
  407.     return str;
  408. }
  409.  
  410. char* s_gets_c(char* str, int size)
  411. {
  412.     int i = 0;
  413.     char ch = '\0';
  414.     while ((ch = getchar()) != '\n' && i < size - 1)
  415.     {
  416.         str[i] = ch;
  417.         i++;
  418.     }
  419.     str[i] = '\0';
  420.     return str;
  421. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top