Проверить, есть ли в массиве 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.

Объяснение кода листинга программы

  1. Объявлены константы n = 7 и k = 3.
  2. Объявлены переменные ix, iy: integer; found: boolean; X: array [1..n] of integer; Y: array [1..k] of integer.
  3. Инициализированы массивы X и Y.
  4. Начинается цикл по переменной ix от 0 до n-k.
  5. Внутри цикла проверяется, что текущий элемент массива X не равен первому элементу массива Y.
  6. Если текущий элемент массива X равен первому элементу массива Y, то начинается цикл по переменной iy от 1 до k.
  7. Внутри цикла проверяется, что каждый последующий элемент массива X равен соответствующему элементу массива Y.
  8. Если все элементы массива X совпадают с элементами массива Y, то значение переменной found устанавливается в true.
  9. После завершения циклов выводится сообщение DA, если были найдены совпадающие элементы, иначе выводится сообщение Net.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы