Задача 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 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.

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

program u15z10;
type mas=array [1..5] of integer;
var i,b,z,y:integer;
    a: mas;
function minus(d:integer; e:mas): mas;
var j:integer;
begin
  for j:=d to high(e) do //сдвигаем массив
  if j=high(e) then
    e[j]:=0
  else
    e[j]:=e[j+1];
result:=e;
end;
begin
  z:=1;
  randomize();
  for i:=low(a) to high(a) do     //заполняем массив случайными числами
  begin
    a[i] :=random(10);
    write(a[i],' ');
  end;
  writeln();
  while z>0 do
  begin
    writeln('Vvedite chislo ot 1 do 5');
    readln(b);
    if (b>5) or (b<1) then
    begin
      writeln('Error');
      break
    end;
    a:=minus(b,a);
    for i:=low(a) to high(a) do //выводим массив без числа под номером b
    begin
      write(a[i],' ');
      if a[i]=0 then
        y:=y+1
      else
        y:=0;
    end;
    if y>=5 then
    begin
      writeln();
      writeln('vse elementu 0');
      break;
    end;
    writeln();
  end;
  readln();
end.     
vedro-compota's picture

засчитано

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