Найти в строке слова, которые содержат все буквы слова - C (СИ)
Формулировка задачи:
Дана строка символов, состоящая из слов, и слово. Разделители - пробелы. Найти в строке слова, которые содержат все буквы слова.
Подскажите, как в цикле организовать проверку? Или в этой задаче нужно использовать функции strstr (strchr)?
int main() { char s[100],x1[10]; char *ptr,*p; int k,length,i,j,c; size_t w=0; puts("Enter a string:" ); gets(s); puts("Enter the world:" ); gets(x1); w=strlen(x1); ptr=strtok(s," "); while(ptr) { ..... ptr=strtok(NULL," "); }
Решение задачи: «Найти в строке слова, которые содержат все буквы слова»
textual
Листинг программы
//цикл проверки букв тестового слова в очередном из строки for(i=0;i<w; i++) { if( strchr(ptr,x1[i])==NULL ) break; //символ не найден в слове } if( i == w ) //все буквы тестового слова присутствуют в очередном слове из строки printf("\n%s",ptr);// печатаем подходящее под условие слово
Объяснение кода листинга программы
В представленном коде выполняется следующая последовательность действий:
- Начальная инициализация:
- В переменной
w
хранится количество букв в тестовом слове. - Переменная
i
инициализируется нулем и будет использоваться в качестве счетчика. - Переменная
ptr
содержит строку, в которой необходимо найти слово, содержащее все буквы тестового слова. - В переменной
x1
хранится тестовое слово.
- В переменной
- Цикл проверки букв тестового слова в очередном из строки:
- Цикл начинается с проверки
if(strchr(ptr,x1[i])==NULL)
. Эта функция ищет первый символ из строкиx1[i]
в строкеptr
. Если этот символ не найден, то цикл прерывается с помощью оператораbreak
. - Если условие
if
не выполняется, то это означает, что текущий символ из тестового слова найден в строкеptr
. Значит, цикл продолжает работу.
- Цикл начинается с проверки
- Окончание цикла и вывод результата:
- Если цикл не был прерван оператором
break
, то это означает, что все буквы тестового слова найдены в строкеptr
. В этом случае выполняетсяprintf(
\n%s,ptr);
, и на экран выводится найденное слово. Таким образом, данный код выполняет поиск в строкеptr
слов, содержащих все буквы тестового словаx1
. При этом найденное слово выводится на экран.
- Если цикл не был прерван оператором
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д