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

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

Заполнить массив из 9 элементов случайными числами, далее получить случайное число N
из диапазона от 1 до 9 и затем "удалить" элемент с позиции N
из массива, "сдвинув" значения влево и заполнив все что справа нулями.

program u15_z9;


type
  myArr1 = array[1..9] of integer;

var i,j,n: integer;
    a: myArr1;
    min,max: integer;

procedure del();

begin
  for i:=low(a) to high(a) do
  begin
    if i = 9 then
    begin
      write('|');
      write(0);
      break;
    end;
    if (i <> n) and (i < n) then
    begin
      write('|');
      write(a[i]);
    end
    else if (i >= n) then
      write('|',a[i+1]);
  end;
end;

begin
  randomize();
  min := 1;
  max := 9;
  for i:=low(a) to high(a) do
  begin
    a[i] := min + random(max - min + 1);
    write('|');
    write(a[i]);
  end;
  n:= min + random(max - min + 1);
  writeln();
  del();
  write('|');

  readln();

end.
vedro-compota's picture

дописал в задачу уточнение:

Также обратитите внимание: сдвигать элементы нужно обновляя сам массив, строка в примере выше, должны быть получена путем распечатки массива, состояние которого изменилось, а не просто выводом элементов на основе массива, без изменения его состояния.

Добавьте ниже альтернативное решение.

Также см. видео-разбор добавленный к задаче в уроке

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

program u15z9;


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

var i,n: integer;
    a: myArr1;
    b: myArr2;
    min,max: integer;

procedure del(a:myArr1; n:integer);
var i,j:integer;
begin;
  i:=1;
  j:=0;
  for i:=low(a) to high(a) do
  begin
    j :=j+1;
    b[j] :=a[i];
    if (i >= n) then
      b[j] :=a[i+1];
    if (i = 9) then
      b[j] :=0;
  end;
end;

procedure out(b:myArr2);
var j:integer;
begin;
  for j:=low(b) to high(b) do
  begin
    write('|');
    write(b[j]);
  end;
  write('|');
end;

begin
  randomize();
  min := 1;
  max := 9;
  for i :=low(a) to high(a) do
  begin
    a[i] := min + random(max - min + 1);
    write('|');
    write(a[i]);
  end;
  write('|');
  writeln();
  n:= min + random(max - min + 1);
  write('chislo n = ',n);
  writeln();
  del(a,n);
  out(b);
  readln();
end.