Задача 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().

type
  myArr = array[1..5] of integer;
  myArr2 = array[1..3] of integer;
var
  a: myArr;
  b: myArr2;
  min, max, i : integer;
 
procedure sdvig(var a : myArr; n:integer);
 
  var i : integer;
begin
  i := 1;
  while i <= high(a) do
    if a[i] = n then
      for i := i to high(a) do
        a[i] := a[i+1]
    else
      i += 1;
end;
 
 
begin
  randomize();
  min := 1;
  max := 15;
  for i:=low(a) to high(a) do
    a[i] := min + random(max - min + 1);
 
  write('one massiv ');
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln;
 
  write('two massiv ');
  for i := low(b) to high(b) do
    read(b[i]);
  writeln;
 
  for i := low(b) to high(b) do
    sdvig(a, b[i]);
 
  write('Posle:');
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln;
 
  write('End');
  readln();readln();
end.

Вывод консоли:

one massiv 7 14 5 4 11 
two massiv 14
5
1

Posle:7 4 11 0 0