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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
   char str[] = "kjgkg kgjgk jhk ghg";
   char substr[] = "jg";
 
   char* pch;
   char* pstr;
   char* psubstr;
   char* cur;
 
   printf("words: %s\n", str);
   pch = strtok(str, " ,.-");
   while (pch != NULL)
   {
      for (pstr = pch, psubstr = substr; *pstr && *psubstr; ++pstr)
      {
         for (cur = pstr, psubstr = substr;
              *cur && *psubstr && (*cur == *psubstr);
              ++cur, ++psubstr) { ; }
      }
 
      if (*psubstr == 0)
      {
         printf("%s\n", pch);
      }
 
      pch = strtok(NULL, " ,.-");
   }
 
   system("pause");
 
   return 0;
}

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

В этом коде на языке 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
Похожие ответы