Проверить, есть ли в массиве 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]? Написать программу, которая решает эту задачу и печатает ответ ДА или НЕТ.
Я немного начала, но понимаю что делаю что-то не то. Помогите а)
Листинг программы
- Var
- n,k,p,i:integer;
- X: array [1..n] of integer;
- Y: array [1..k] of integer;
- begin
- p:=0; i:=0;
- if X[i+p]=Y[p] then inc(p); inc(i);
- write('DA');
- if X[i+p] <> Y[p]then
- write('Net')
- end.
Решение задачи: «Проверить, есть ли в массиве 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д