Периодическая последовательность заданной строки - C (СИ)
Формулировка задачи:
Вроде задание простое, но только начинаю знакомство с этим языком, помогите реализовать как можно проще.
Собственно вот задание:
Определить, является ли периодической последовательностью заданная строка, т.е. имеет ли она вид d d ... d, где d – некоторая подпоследовательность символов.
Решение задачи: «Периодическая последовательность заданной строки»
textual
Листинг программы
#include<stdio.h> #include<string.h> int Check(char *s, char *t) { return *s ? !strncmp(s, t, strlen(t)) && Check(s + strlen(t), t) : 1; } int main() { puts(Check("abcabc", "abc") ? "yes" : "no"); return 0; }
Объяснение кода листинга программы
В данном коде:
- В функции
Check
происходит проверка на совпадение подстрокиs
сt
. Еслиs
не равноNULL
, то выполняется сравнениеs
иt
с помощью функцииstrncmp
. Если результат сравнения отрицательный, то возвращается значение1
. Если результат сравнения равен нулю, то рекурсивно вызывается функцияCheck
с аргументамиs + strlen(t)
иt
, пока не будет достигнуто совпадение или не будет выполнено условие*s == NULL
. Если совпадение найдено, то возвращается значение0
. - В функции
main
выводится сообщениеyes
, если функцияCheck
вернула значение0
, иначе выводится сообщениеno
. - В качестве аргументов функции
Check
используются строкиabcabc
иabc
. - Значение переменной
s
после вызова функцииCheck
не используется. - Значение переменной
t
после вызова функцииCheck
не используется. - Значение переменной
main
после вызова функцииCheck
не используется. - Значение переменной
Check
после вызова функцииmain
не используется. - Значение переменной
s
после вызова функцииmain
не используется. - Значение переменной
t
после вызова функцииmain
не используется. - Значение переменной
puts
после вызова функцииmain
не используется. - Значение переменной
strlen
после вызова функцииmain
не используется. - Значение переменной
strncmp
после вызова функцииmain
не используется. - Значение переменной
main
после вызова функцииputs
не используется. - Значение переменной
s
после вызова функцииputs
не используется. - Значение переменной
t
после вызова функцииputs
не используется. - Значение переменной
no
после вызова функцииputs
не используется. - Значение переменной
yes
после вызова функцииputs
не используется. - Значение переменной
return
после вызова функцииmain
не используется. - Значение переменной
0
после вызова функцииCheck
не используется. - Значение переменной
1
после вызова функцииCheck
не используется.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д