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

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

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

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

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

textual
Листинг программы
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<string.h>
 
void str_ing (char s[]);
 
int main (void){
    char s[]="testing a program with ing\0";
    printf ("%s \n", s);
    str_ing(s);
 
    printf ("%s \n", s);
}
 
void str_ing (char s[]){
    int count=0, i=0, count_ing=0;
    int len = strlen(s);
    do {
        while (isalpha(s[i]) && s[i]!=' '){
            count++;
            i++;
        }
        if (count >= 3)
            for (int j=i-3;j<i;j++)
                if (s[j]=='i'|| s[j]=='n' || s[j]=='g') 
                    count_ing++;
        
        if (count_ing==3){
            for (int j=i;j>i-1-count;j--)
                s[j]='\b';
        }
        count=0;
        count_ing=0;
        i++;
    }while (i<len);
    int j;
    for (i=0,j=0;i<len; i++)
        if (s[i]!='\b'){
            s[j]=s[i];
            j++;
        }
    s[j]='\0';
    
}

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

В этом коде реализована функция 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
Похожие ответы