Дан текст. Преобразуйте текст, удалив слова, в которых есть заданная подстрока. - C (СИ)
Формулировка задачи:
Дан текст. Преобразуйте текст, удалив слова, в которых есть заданная подстрока.
Пример: "Кто был ничем, тот станет всем". Подстрока "то".
Результат: "был ничем, станет всем".
Помогите с алгоритмом, не пойму как удалить всё слово и с помощью сдвига ли?
И как распознать слова в котором встречается данная подстрока.
Решение задачи: «Дан текст. Преобразуйте текст, удалив слова, в которых есть заданная подстрока.»
textual
Листинг программы
#include <stdio.h> #include <string.h> main() { char stroka[100],slovo[20],podstroka[5]; int i,j,k; k=0; //индекс в слове printf("Enter string: "); gets(stroka); printf("Enter substring: "); gets(podstroka); for(i=0;i<strlen(stroka)+1;i++) //цикл по всей строке { if ((stroka[i]!=' ')&&(i!=strlen(stroka))) //пока не доходим до пробела или конца строки записываем символы как отдельное слово { slovo[k]=stroka[i]; // пишем слово в массив k++; } else //если дошли до пробела { if(strstr(slovo,podstroka)==NULL) // ищем подстроку в нашем слове { for(j=0;j<k;j++) printf("%c",slovo[j]); //если подстрока не найдена - выводим слово printf(" "); } k=0; } } printf("\n"); system("pause"); }
Объяснение кода листинга программы
- В начале определяются две строки:
stroka
иpodstroka
, а также переменнаяk
для хранения индекса в слове. - Пользователю предлагается ввести строку и подстроку.
- Затем идет цикл по всем символам входной строки. Если текущий символ не является пробелом и не является последним символом строки, он добавляется в
slovo
и увеличиваетсяk
. - Если текущий символ является пробелом, проверяется наличие подстроки в слове. Если подстрока не найдена, текущее слово выводится на экран.
- После обработки всех слов, выводится символ новой строки.
- В конце программа ожидает нажатия клавиши
pause
для завершения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д