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

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

Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от 1 до 5 -- удаляйте
из массива очередной элемент с позиции очередного введенного пользователем
числа, сдвигая оставшиеся элементы массива влево, заполняя то, что справа
нулями. Распечатывайте промежуточной состояние массива, после каждого удаления.

Цикл должен работать до тех пор, пока в массиве не останется ненулевых
элементов или пока пользователь не введет число большее чем 5 или меньшее чем 1.

Например:

|1|3|7|5|4| // исходный массив
3 // ввод пользователя
|1|3|5|4|0| // промежуточный результат
3 // ввод пользователя
|1|3|4|0|0| // промежуточный результат
2 // ввод пользователя
|1|4|0|0|0| // промежуточный результат
1 // ввод пользователя
|4|0|0|0|0| // промежуточный результат
1 // ввод пользователя
|0|0|0|0|0| // промежуточный результат
// Cообщение о завершении, т.к. все элементы удалены
-- в данном случае программа завершилась, так как удалены все элементы.
Если бы пользователь ввел число 10 или -5 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.

Примечание: оформить код сдвига элемента как функцию.

type
  myArr1 = array[1..5] of integer;
var
  a: myArr1;
  min, max, i, n, j : integer;
function sdvig(var a : myArr1; n : integer) : myArr1;
var i : integer;
begin
  writeln('Убираем число ', a[n]);
  for i := n to high(a) do
    a[i] := a[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('Числа массива до операции: ');
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln;
  for j := 1 to 5 do
  begin
    writeln('Какое число убрать?');
    readln(n);
    if (n < 0) or (n > 5) then break;
    sdvig(a, n);
    write('Числа массива после операции: ');
    for i := low(a) to high(a) do
      write(a[i], ' ');
    writeln;
  end;
  write('Программа завершила свою работу');
  readln();readln();
end.