Функция для удаления со строки слов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите написать функию для удаления все слов которые не имеют окончание ing.

Решение задачи: «Функция для удаления со строки слов»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<ctype.h>
  4. #include<string.h>
  5.  
  6. void str_ing (char s[]);
  7.  
  8. int main (void){
  9.     char s[]="testing a program with ing\0";
  10.     printf ("%s \n", s);
  11.     str_ing(s);
  12.  
  13.     printf ("%s \n", s);
  14. }
  15.  
  16. void str_ing (char s[]){
  17.     int count=0, i=0, count_ing=0;
  18.     int len = strlen(s);
  19.     do {
  20.         while (isalpha(s[i]) && s[i]!=' '){
  21.             count++;
  22.             i++;
  23.         }
  24.         if (count >= 3)
  25.             for (int j=i-3;j<i;j++)
  26.                 if (s[j]=='i'|| s[j]=='n' || s[j]=='g')
  27.                     count_ing++;
  28.        
  29.         if (count_ing==3){
  30.             for (int j=i;j>i-1-count;j--)
  31.                 s[j]='\b';
  32.         }
  33.         count=0;
  34.         count_ing=0;
  35.         i++;
  36.     }while (i<len);
  37.     int j;
  38.     for (i=0,j=0;i<len; i++)
  39.         if (s[i]!='\b'){
  40.             s[j]=s[i];
  41.             j++;
  42.         }
  43.     s[j]='\0';
  44.    
  45. }

Объяснение кода листинга программы

В этом коде реализована функция str_ing, которая принимает на вход строку s и удаляет из неё все слова, состоящие из букв i, n и g, если эти слова состоят из трёх и более букв. В противном случае, если слово состоит из двух букв, оно остаётся в строке. Список действий, которые происходят в коде:

  1. В функции main создаётся тестовая строка s = testing a program with ing.
  2. Строка выводится на экран.
  3. Вызывается функция str_ing с аргументом s.
  4. После выполнения функции str_ing, строка снова выводится на экран.
  5. В функции str_ing создаются три переменные: count - счётчик количества букв в текущем слове, i - счётчик, отмечающий позицию текущей буквы в строке, count_ing - счётчик, отмечающий количество найденных букв i, n, g.
  6. В цикле do-while происходит проход по всем буквам строки s.
  7. Внутри цикла в цикле while происходит поиск букв i, n, g, следующих друг за другом, и подсчёт количества таких букв (count_ing).
  8. Если количество букв i, n, g равно трём, то в цикле for происходит замена этих букв на символ '\b' (обратный слэш, пробел).
  9. После каждой замены счётчики count и count_ing сбрасываются в ноль.
  10. После прохода по всем буквам строки s, в цикле for происходит сборка итоговой строки, в которую переносятся все символы исходной строки, не являющиеся символом '\b'.
  11. В конце функции в строку s добавляется символ '\0' (нулевой символ), который обозначает конец строки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы