Задача 13 Урок 15

Задача 13 Урок 15:

Пусть есть процедура, которая умеет сдвигать массив влево на 1 элемент, начиная с указанного символа (устанавливая последний элемент равным нулю):

type newArr = array [1..5] of integer;
  
procedure shiftArr(var promArr: newArr; k:integer);
var j:integer;
begin
  for j:=k to 4 do
    promArr[j]:=promArr[j+1];
  promArr[high(promArr)]:=0;
end;

Задача: У вас есть исходный массив случайных целых чисел из 5 элементов. Пользователь вводит три числа целых числа, сохраните их во второй массив и затем проведите сдвиг элементов исходного массива, для каждого случая их совпадения с элементами из второго массива, для сдвига используйте процедуру shiftArr().

Пример 1:
Исходный массив: 1 5 6 8 9
Числа пользователя:
2
4
5
Ответ:
1 6 8 9 0
Пример 2:
Исходный массив: 1 5 6 8 9
Числа пользователя:
8
4
6
Ответ:
1 5 9 0 0
Пример 3:
Исходный массив: 1 5 6 5 9
Числа пользователя:
5
4
6
Ответ:
1 9 0 0 0
program u15z13;
type newArr = array [1..5] of integer;
var i,z,b:integer;
    n:newArr;
    d: array [1..3] of integer;
procedure shiftArr(var promArr: newArr; k:integer);
var j:integer;
begin
  for j:=k to 4 do
    promArr[j]:=promArr[j+1];
  promArr[high(promArr)]:=0;
end;
begin
  randomize();
  for i:=low(n) to high(n) do     //заполняем массив случайными числами
  begin
    n[i] :=random(10);
    write(n[i],' ');
  end;
  writeln();
  writeln('vvedite 3 chicla');  //вводим 3 числа
  for z:=low(d) to high(d) do
    readln(d[z]);
  for i:=low(n) to high(n) do   //сравниваем числа
  begin
    b:=1;
    while (b<=3) do
    begin
      if (d[b]=n[i]) and (d[b]>0) then //если без проверки то при вводе 0 вечный цикл
      begin
        shiftArr (n,i);
      end
      else
        b:=b+1;
    end;
  end;
  for i:=low(n) to high(n) do    //выводим полученный массив
    write(n[i], ' ');
  readln;
end.