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

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

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

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

program u15_z10;

type
  myArr1 = array[1..5] of integer;
var n: integer;
    a: myArr1;

    min,max: integer;
    i,j: integer;

function del():integer;
begin

end;

begin
  randomize();
  min := -10;
  max := 10;
  n:=1;
  j:=1;
  for i:=low(a) to high(a) do
  begin
    a[i] := min + random(max - min + 1);
    write(a[i],' ');
  end;

  while (n >= 1) and (n <= 5) do
  begin
    writeln();
    writeln('vvedite chislo n');
    readln(n);
    if (n < 1) or (n > 5) then
      break;
    for i := low(a) to high(a) do
    begin
      if (i <> n) and (i < n) then
      begin
        write(a[i],' ');
      end
      else if (i >= n) then
      begin
        write(a[i + 1],' ');
        a[i]:=a[i + 1];
      end;
    end;
    if (a[1] = 0) then
      break;
  end;
  readln();
end.     
vedro-compota's picture

замечания:

  • как и в предыдущей задаче оформим сдвиг процедурой (ну или функцией с возвратом значения)
  • также в данном случае для перебора массива лучше использовать цикл for
  • распечатку массива вынесем в отдельную процедуру

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

program u15z10;

type
  myArr1 = array[1..5] of integer;
  myArr2 = array[1..5] of integer;

var i,j,n: integer;
    a: myArr1;
    b: myArr2;

    min,max: integer;


procedure out(b:myArr2);
var i,j:integer;
begin
  j:=1;
  i:=1;
  for j:=low(a) to high(a) do
  begin
  write(b[j],' ');
  a[i]:=b[j];
  i:=i+1;
  end;
end;

begin
  randomize();
  min := -10;
  max := 10;
  n:=1;
  j:=1;
  for i:=low(a) to high(a) do
  begin
    a[i] := min + random(max - min + 1);
    write(a[i],' ');
  end;

  while (n >= 1) and (n <= 5) do
  begin
    if a[1] = 0 then
      break;
    writeln();
    writeln('vvedite chislo n');
    readln(n);
    if (n < 1) or (n > 5) then
      break;
    for i := low(a) to high(a) do
    begin
      if (i < n) then
        b[j] := a[i]
      else if (i >= n) then
        b[j] := a[i + 1];
      j:=j+1;
    end;
    out(b);
    j:=1;
  end;
  readln();
end.