Функция для удаления со строки слов - 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' (нулевой символ), который обозначает конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д