Определить вхождение последовательности в последовательность - PascalABC.NET
Формулировка задачи:
Дана последовательность: 110100100010000100000...
Написать программу, определяющую по заданной последовательности нулей и единиц, входит ли она в последовательность, если да, то с какой по счёту цифры.
Пример входных данных
1001
Пример выходных данных:
4
Умоляю о помощи!
Решение задачи: «Определить вхождение последовательности в последовательность»
textual
Листинг программы
begin var s := ReadLnString; var z := 0; var x := 0; for var i := 1 to s.Length do if s[i] = #48 then x += 1 else if x > z then z := x; var p : String := '1'; for var i := 1 to z + 1 do begin p += '1'; for var d := 1 to i do p+= '0'; end; p += '1'; WriteLn(Pos(s, p)); end.
Объяснение кода листинга программы
В этом коде:
- Считывается строка s с помощью функции ReadLnString.
- Инициализируются переменные z и x со значениями 0.
- Происходит цикл по символам строки s. Если текущий символ равен #48 (это символ '1' в кодировке Unicode), то значение переменной x увеличивается на 1. Если текущий символ не равен '1', и значение переменной x больше значения переменной z, то значение переменной z присваивается значение переменной x.
- Инициализируется переменная p со значением '1'.
- Происходит цикл по значениям переменной z + 1. Для каждого значения i из этого диапазона:
- Переменная p дополняется символами '1'.
- Происходит цикл по значениям от 1 до i. Для каждого значения d из этого диапазона:
- Переменная p дополняется символами '0'.
- Переменная p дополняется символом '1'.
- Вызывается функция Pos для поиска первого вхождения подстроки p в строке s, и результат выводится на экран с помощью функции WriteLn.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д