В заданном массиве строк найти все слова, содержащие заданное сочетание символов - 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
).
Алгоритм решения задачи следующий:
- Задаются исходная строка (str) и подстрока (substr), которую необходимо найти в словах исходной строки.
- Строка разбивается на слова с помощью функции strtok. Для разделения используются пробелы, точки и тире.
- Для каждого найденного слова выполняется проверка на наличие подстроки.
- Если подстрока найдена в слове, то слово выводится на экран. Код работает следующим образом:
- Создается указатель pch, который будет указывать на текущее слово в исходной строке.
- Функция strtok используется для разбиения исходной строки на слова. В качестве разделителей используются пробелы, точки и тире.
- Пока не будет достигнуто последнее слово в исходной строке (pch не станет равным NULL), выполняется следующая операция: a. Создается указатель pstr, который будет указывать на текущее слово в исходной строке. b. Создается указатель psubstr, который будет указывать на текущую подстроку в слове. c. Пока текущее слово не закончится (pstr не станет равным NULL), выполняется следующая операция: — Пока текущая подстрока не закончится (psubstr не станет равным NULL), выполняется следующая операция: — Пока текущий символ в слове и текущий символ в подстроке совпадают (то есть пока pstr && psubstr), выполняется следующая операция: — Указатели pstr и psubstr перемещаются на следующий символ. — Если текущий символ в подстроке равен 0 (psubstr == NULL), то текущее слово содержит подстроку, и его можно вывести на экран. — Если текущая подстрока закончилась (psubstr == NULL), то текущее слово больше не содержит подстроку, и его можно пропустить. — Если текущее слово закончилось (pstr == NULL), то можно переходить к следующему слову.
- После того, как все слова будут проверены, программа выводит на экран найденные слова. Таким образом, данный код выводит на экран все слова в исходной строке, которые содержат заданную подстроку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д