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

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

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

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

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

получим:

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

Решение:

program u15z12;
type newArr = array [1..7] of integer;
var i:integer;
a,b:newArr;

procedure writeArr(arr:newArr);
begin
  for i:=low(arr) to high(arr) do
    write(arr[i],'|');
end;

function uniArr(a:newArr):newArr;
var j,k,n:integer;
begin
  n:=1;
  k:=0;
  for i:=1 to 6 do
  begin
    for j:=i+n to 7 do
    begin
      if (a[i]=a[j]) then
      begin
        a[j]:=0;
        k:=1;
      end;
      n:=n+1;
    end;
    if (k=1) then
    begin
      a[i]:=0;
      k:=0;
    end;
    n:=1;
  end;
  k:=1;
  for i:=1 to 7 do
    if (a[i]<>0) then
    begin
      b[k]:=a[i];
      k:=k+1;
    end;
  result:=b;
end;

begin
  randomize;
  for i:=low(a) to high(a) do
    a[i]:= random(15)+1;
  writeArr(a);
  writeln();
  b:=uniArr(a);
  writeArr(b);
  readln();
end.

Консоль:

11|13|10|3|5|10|3|
11|13|5|0|0|0|0|