В заданном массиве строк найти все слова, содержащие заданное сочетание символов - C (СИ) (75957)

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

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

в заданном массиве строк найти все слова,содержащие заданное сочетание символов,и вывести их на монитор. Исходный массив строк ввести с помощью инициализации.Максимальное количество символов в строке- 80.Количество строк-5.На экран монитора вывести исходный массив и результат расчета.При обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include<stdlib.h>
  4. int main ()
  5. {
  6. char str[] ="kjgkg kgjgk jhk ghg";
  7. char * pch,t='jg';
  8. printf ("slowa %s\n",str);
  9. pch = strtok (str," ,.-");
  10. while (pch != NULL)
  11. {
  12. printf ("%s\n",pch);
  13. pch = strtok (NULL, " ,.-");
  14. }
  15. if (*pch=t) printf ("%s" ,pch);
  16. system ("pause");
  17. return 0;
  18. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.    char str[] = "kjgkg kgjgk jhk ghg";
  8.    char substr[] = "jg";
  9.  
  10.    char* pch;
  11.    char* pstr;
  12.    char* psubstr;
  13.    char* cur;
  14.  
  15.    printf("words: %s\n", str);
  16.    pch = strtok(str, " ,.-");
  17.    while (pch != NULL)
  18.    {
  19.       for (pstr = pch, psubstr = substr; *pstr && *psubstr; ++pstr)
  20.       {
  21.          for (cur = pstr, psubstr = substr;
  22.               *cur && *psubstr && (*cur == *psubstr);
  23.               ++cur, ++psubstr) { ; }
  24.       }
  25.  
  26.       if (*psubstr == 0)
  27.       {
  28.          printf("%s\n", pch);
  29.       }
  30.  
  31.       pch = strtok(NULL, " ,.-");
  32.    }
  33.  
  34.    system("pause");
  35.  
  36.    return 0;
  37. }

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

В этом коде на языке C выполняется следующая задача: В заданном массиве строк (в данном случае это строка kjgkg kgjgk jhk ghg) необходимо найти все слова, содержащие заданное сочетание символов (в данном случае это jg). Алгоритм решения задачи следующий:

  1. Задаются исходная строка (str) и подстрока (substr), которую необходимо найти в словах исходной строки.
  2. Строка разбивается на слова с помощью функции strtok. Для разделения используются пробелы, точки и тире.
  3. Для каждого найденного слова выполняется проверка на наличие подстроки.
  4. Если подстрока найдена в слове, то слово выводится на экран. Код работает следующим образом:
  5. Создается указатель pch, который будет указывать на текущее слово в исходной строке.
  6. Функция strtok используется для разбиения исходной строки на слова. В качестве разделителей используются пробелы, точки и тире.
  7. Пока не будет достигнуто последнее слово в исходной строке (pch не станет равным NULL), выполняется следующая операция: a. Создается указатель pstr, который будет указывать на текущее слово в исходной строке. b. Создается указатель psubstr, который будет указывать на текущую подстроку в слове. c. Пока текущее слово не закончится (pstr не станет равным NULL), выполняется следующая операция: — Пока текущая подстрока не закончится (psubstr не станет равным NULL), выполняется следующая операция: — Пока текущий символ в слове и текущий символ в подстроке совпадают (то есть пока pstr && psubstr), выполняется следующая операция: — Указатели pstr и psubstr перемещаются на следующий символ. — Если текущий символ в подстроке равен 0 (psubstr == NULL), то текущее слово содержит подстроку, и его можно вывести на экран. — Если текущая подстрока закончилась (psubstr == NULL), то текущее слово больше не содержит подстроку, и его можно пропустить. — Если текущее слово закончилось (pstr == NULL), то можно переходить к следующему слову.
  8. После того, как все слова будут проверены, программа выводит на экран найденные слова. Таким образом, данный код выводит на экран все слова в исходной строке, которые содержат заданную подстроку.

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


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

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

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы