Функция для удаления со строки слов - 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, если эти слова состоят из трёх и более букв. В противном случае, если слово состоит из двух букв, оно остаётся в строке. Список действий, которые происходят в коде:
- В функции main создаётся тестовая строка s =
testing a program with ing
. - Строка выводится на экран.
- Вызывается функция str_ing с аргументом s.
- После выполнения функции str_ing, строка снова выводится на экран.
- В функции str_ing создаются три переменные: count - счётчик количества букв в текущем слове, i - счётчик, отмечающий позицию текущей буквы в строке, count_ing - счётчик, отмечающий количество найденных букв i, n, g.
- В цикле do-while происходит проход по всем буквам строки s.
- Внутри цикла в цикле while происходит поиск букв i, n, g, следующих друг за другом, и подсчёт количества таких букв (count_ing).
- Если количество букв i, n, g равно трём, то в цикле for происходит замена этих букв на символ '\b' (обратный слэш, пробел).
- После каждой замены счётчики count и count_ing сбрасываются в ноль.
- После прохода по всем буквам строки s, в цикле for происходит сборка итоговой строки, в которую переносятся все символы исходной строки, не являющиеся символом '\b'.
- В конце функции в строку s добавляется символ '\0' (нулевой символ), который обозначает конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д