В произвольном тексте найти и отпечатать слова, содержащие букву i, но не содержащие букву m - C (СИ)

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

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

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
char str[50]; 
char* t; 
printf("\nVvedite stroku:\n"); 
gets(str); 
t=strtok(str,"!?. ,"); 
while (t != NULL) 
{
if(t[strlen(t)]=='i'&&t[strlen(t)]!='m')  {
printf("\nSlovo: %s",t); 
}
t = strtok (NULL," ,"); 
} 
} /*ГЄГ®Г*ГҐГ¶ ГІГҐГ«Г* ïðîãðГ*ììû*/
Есть наброски, но не могу сообразить, как нужно задать условие. Помогите, кто знает.

Решение задачи: «В произвольном тексте найти и отпечатать слова, содержащие букву i, но не содержащие букву m»

textual
Листинг программы
#include <stdio.h> 
#include <string.h> 
main() 
{ 
char str[1024]; 
char* k; 
printf("Text:\n"); 
printf("\n");
gets(str); 
k=strtok(str,"!?. ,"); 
while(k!='\0') 
{
if(strchr(k,'i')&&!strchr(k,'m')) 
printf("\nSlovo: %s",k); 
k=strtok('\0'," ,"); 
} 
} /*конец тела программы*/

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

  1. Включаем необходимые заголовочные файлы для работы с памятью и строками.
  2. Определяем точку входа в программу.
  3. Объявляем буфер для хранения входной строки.
  4. Объявляем указатель на начало подстроки, которую будем искать.
  5. Выводим приглашение для ввода текста.
  6. Считываем строку с помощью функции gets().
  7. Используем функцию strtok() для разделения входной строки на подстроки по заданным разделителям.
  8. В цикле while получаем каждую подстроку и проверяем условие: содержит ли она букву 'i' и не содержит ли букву 'm'.
  9. Если условие выполняется, выводим найденное слово.
  10. Повторяем поиск следующей подстроки, пока не будет найден ноль-терминатор.
  11. Завершаем программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы