Проверить, есть ли в массиве X идущие подряд элементы, совпадающие с содержимым массива Y - PascalABC.NET
Формулировка задачи:
Даны два целочисленных массива Х[1:n] и Y[1:k]. Можно ли в первом из них выбрать такие k идущих подряд элементов X[i+1], X[i+2], …, X[i+k], чтобы X[i+1]=Y[1], X[i+2]=Y[2], …, X[i+k]=Y[k]? Написать программу, которая решает эту задачу и печатает ответ ДА или НЕТ.
Я немного начала, но понимаю что делаю что-то не то. Помогите а)
Решение задачи: «Проверить, есть ли в массиве X идущие подряд элементы, совпадающие с содержимым массива Y»
textual
Листинг программы
const n = 7; k = 3; var ix, iy: integer; found: boolean; X: array [1..n] of integer := (1, 2, 3, 2, 3, 4, 7); Y: array [1..k] of integer := (2, 3, 4); begin ix := 0; repeat inc(ix); while (ix <= n - k) and (x[ix] <> y[1]) do inc(ix); found := ix <= n - k; for iy := 1 to k do found := found and (x[ix + iy - 1] = y[iy]); until found or (ix + k >= n); if found then write('DA') else write('Net') end.
Объяснение кода листинга программы
- Объявлены константы n = 7 и k = 3.
- Объявлены переменные ix, iy: integer; found: boolean; X: array [1..n] of integer; Y: array [1..k] of integer.
- Инициализированы массивы X и Y.
- Начинается цикл по переменной ix от 0 до n-k.
- Внутри цикла проверяется, что текущий элемент массива X не равен первому элементу массива Y.
- Если текущий элемент массива X равен первому элементу массива Y, то начинается цикл по переменной iy от 1 до k.
- Внутри цикла проверяется, что каждый последующий элемент массива X равен соответствующему элементу массива Y.
- Если все элементы массива X совпадают с элементами массива Y, то значение переменной found устанавливается в true.
- После завершения циклов выводится сообщение
DA
, если были найдены совпадающие элементы, иначе выводится сообщениеNet
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д