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

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

Заполнить массив из 9 элементов случайными числами из диапазона от нуля до N
, и затем удалите из этого массива все элементы равные M
, причем удаление необходимо производить "сдвигом" влево оставшихся элементов на позиции элементов, совпавших с M
.
Решить двумя способами:

1) Любым
2) Провести операцию сдвига за одно прочтение исходного массива (для этого нам потребуется еще один массив, где мы будем хранить какие-то значения)


program u15_z11; // 1 вариант решения


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

var m,i: integer;
    a: myArr1;
    min,max,n,z: integer;

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

  writeln();
  m:=4; // например если m равно 4

  for i := low(a) to high(a) do
  begin
    if (a[i] <>  m) then
      write(a[i],' ')
    else
      if (a[i] = m) then
      begin
       if a[9] = z then
         a[9]:=0;
       a[i]:= a [i + 1];
       z:=z+1;
      end;
  end;
  readln();
end.
     
program project1; // 2 вариант решения с двумя массивами

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

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

begin
  randomize();
  min := 0;
  n := 10;
  max := n;
  j := 1;
  m := 4; // например если m равно 4
  z := 0;

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

  writeln();

  i := 1;
  while (j <= 9) do
  begin
    b[j] := a[i];
    if (i > 9) then
      break;
    if (a[i] = m) then
    begin
      b[j]:= a [i+1];
      i := i+1;
      z := z + 1;
    end;
    j := j + 1;
    i := i + 1;
  end;

  for i := low(b) to (j - 1) do
  begin
    write(b[i],' ');
  end;
  readln();
end.