Урок 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().

Пример 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 u15z11;
type newArr = array [1..5] of integer;
var i,j,n:integer;
  a:newArr;
  b:array[1..3] of integer;

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

begin
  randomize;
  for i:=low(a) to high(a) do
    a[i]:= random(15);
  write('massiv a: ');
  for i:=low(a) to high(a) do
    write(a[i],' ');
  writeln();
  writeln('vvedite chisla:');
  for i:=low(b) to high(b) do
    readln(b[i]);
  for i:=low(a) to high(a) do
    for j:=low(b) to high(b) do
      begin
        if a[i] = b[j] then
          shiftArr(a,i);
      end;
  write('new massiv a: ');
  for i:=low(a) to high(a) do
    write(a[i],' ');
  writeln();
  readln();
end.

Консоль:

massiv a: 9 11 11 5 14
vvedite chisla:
1
3
5
new massiv a: 9 11 11 14 0