В заданном массиве строк найти все слова, содержащие заданное сочетание символов - 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), то можно переходить к следующему слову.
- После того, как все слова будут проверены, программа выводит на экран найденные слова. Таким образом, данный код выводит на экран все слова в исходной строке, которые содержат заданную подстроку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д