Урок 15. Задача 11.

Урок 15. Задача 11.

Пусть есть процедура, которая умеет сдвигать массив влево на 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 newArr = array [1..5] of integer;
var i, a, b, c : integer;
    Arr : array [1..3] of integer;
    fl : boolean;
    Arr_New : newArr;

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 := 1 to 5 do
  begin
    Arr_New[i] := random(9) + 1;
    write(Arr_New[i], ' ');
  end;

  writeln();
  for i := 1 to 3 do
  begin
    write('Enter ');
    readln(a);
    Arr[i] := a;
  end;

  for a := low(Arr) to high(Arr) do
  begin
    for b := low(Arr_New) to high(Arr_New) do
      if Arr[a] = Arr_New[b] then
      begin
        if Arr_New[b] = Arr_New[b + 1] then
          shiftArr(Arr_New, b);
        shiftArr(Arr_New, b);
      end;
  end;

  for i := low(Arr_New) to high(Arr_New) do  // вывод массива
    write(Arr_New[i], ' ');
  readln();
end.   
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)