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

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

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

?
1
2
3
4
5
6
7
8
9

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
2
3
4
5
6
7

Исходный массив: 1 5 6 8 9
Числа пользователя:
2
4
5
Ответ:
1 6 8 9 0

type Arr= array[1..5] of integer;

var a: Arr; b: array[1..3] of integer; i,l, min,max: integer;

procedure shiftArr(var promArr: Arr; k:integer);
var j:integer;
begin
  for j:=k to 4 do
    promArr[j]:=promArr[j+1];
  promArr[high(promArr)]:=0;
end;

begin
  randomize();
  min:=1;
  max:=8;
  for i:=low(a) to high(a) do
  begin
    a[i] := min + random(max - min + 1);
    write (a[i],' ');
  end;
  writeln();

  b[1]:=3;
  b[2]:=4;
  b[3]:=6;

  for i:=high(a) downto low(a) do
    for l:=low(b) to high(b) do
      if a[i]= b[l] then
      begin
        if i=high(a) then
          a[i]:=0
        else
          shiftArr (a, i);
        break;
      end;


  for i:=low(a) to high(a) do
    write(a[i],' ');
  readln();
end.