Урок 15. Задача 12.

Урок 15. Задача 12.

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

type newArr = array [1..7] of integer;
var i : integer;
    Arr : newArr;

function shift_unique(Arr_2 :newArr) :newArr;
var i, j, a : integer;
begin
  for i := 1 to 6 do
  begin
    a := Arr_2[i];
    for j := 2 to 7 do
      if (a = Arr_2[j]) and (i <> j) then
      begin
        Arr_2[i] := 0;
        Arr_2[j] := 0;
      end;
  end;

  for i := 1 to 7 do // ограничение циклов для смещения массива
    if Arr_2[i] = 0 then
      a := a + 1;

  for i := 1 to a do // 'a' количество нулей
    for j := 1 to 6 do
      if Arr_2[j] = 0 then
      begin
        Arr_2[j] := Arr_2[j + 1];
        Arr_2[j + 1] := 0;
      end;

  shift_unique := Arr_2;
end;

begin
  randomize;
  for i := 1 to 7 do // инициализация
  begin
    Arr[i] := random(15) + 1;
    write(Arr[i], ' ');
  end;
  writeln();

  Arr := shift_unique(Arr);
  for i := low(Arr) to high(Arr) do // вывод массива
    write(Arr[i], ' ');
  readln();
end.