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

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

Напишите функцию, которая определяет являются ли значения переданного массива
целых чисел уникальными относительно друг друга, если среди есть неуникальные
элементы, то удалите их, сдвинув значения влево, заполняя оставшиеся справа ячейки нулями.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для:

|1|-3|5|-3|9|5|8|

получим:

|1|9|8|0|0|0|0|

type
  myArr1 = array[1..7] of integer;
  myArr2 = array[1..7] of boolean;
var
  a: myArr1;
  b: myArr2;
  min, max, i  : integer;

  function unik(var a : myArr1; var b : myArr2) : boolean;
  var i, j : integer;
  begin
    i := 1;
    result := true;
    while i <= high(a) do
    begin
      for j := i to high (a) do
        if a[i] = a[j+1] then
        begin
          result := false;
          b[i] := true;
          b[j+1] := true;
        end;
      i += 1;
    end;
  end;

procedure sdvig(var a : myArr1; var b : myArr2);
  var i, j : integer;
  begin
    i := 7;
    while i >= low(a) do
    begin
      if b[i] = true then
        for j := i to high (a) do
          a[j] := a[j+1];
      i -= 1;
    end;
  end;

begin
  randomize();
  min := 1;
  max := 15;
  for i:=low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  for i:=low(b) to high(b) do
    b[i] := false;

  write('Числа массива a до операции: ');
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln;
  unik(a, b);
                              
  if unik(a, b) = false then
  begin
    writeln('Массив не уникален ');
    sdvig(a, b);
    write('Числа массива после операции: ');
    for i := low(a) to high(a) do
      write(a[i], ' ');
    writeln;
  end
  else
    writeln('Массив уникален ');

  write('Программа завершила свою работу');
  readln();readln();
end.