Создать 2 целочисленных массива X[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 ]. Написать программу, которая дает ответ ‘да’ и выводит начальный индекс в массиве Х (т.е. i+1) или дает ответ ‘нет’.- Pascal(Паскаль)

program Project1;
 
const
  M = 10;
  N = 3;
var
  X : array[1..M] of Integer;
  Y : array[1..N] of Integer;
  i, j : Integer;
  Res : Boolean;
begin
  Randomize;
  for i := 1 to M do
    X[i] := Random(10); //0..9.
 
  //Для проведения эксперимента:
  X[6] := 1;
  Y[1] := X[6];
  X[7] := 2;
  Y[2] := X[7];
  X[8] := 3;
  Y[3] := X[8];
 
  Writeln('Массив X:');
  for i := 1 to M do begin
    if i > 1 then Write(', ');
    Write(X[i]);
  end;
  Writeln;
  Writeln('Массив Y:');
  for i := 1 to N do begin
    if i > 1 then Write(', ');
    Write(Y[i]);
  end;
  Writeln;
 
  //Решение задачи.
  Res := False;
  for i := 1 to M - N + 1 do begin
    Res := True;
    for j := 1 to N do begin
      if X[i + j - 1] <> Y[j] then begin
        Res := False;
        Break;
      end;
    end;
    if Res then Break;
  end;
 
  if Res then
    Writeln('Найдено вхождение Y в X, начиная с индекса: ', i)
  else
    Writeln('Нет вхождений Y в X.')
  ;
  Readln;
end.

Leave a Comment

74 − = 69