Pascal Урок 15 Задача 8

Урок 15 задача 8

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

program U15Z8;
const n=7;
var a: array[1..n] of integer;
  i,j,c:integer;
  procedure initIntArrayOfSeven(var a: array of integer);
var min, max: integer;
begin
   randomize();
   min := 1;
   max := 15;
   for i:=low(a) to high(a) do
      a[i] := min + random(max - min + 1);
end;
function checkUnic(a: array of integer):boolean;
begin
  for i:=low(a) to n-1 do
  begin
    for j:=i+1 to n do
    begin
      if (a[i]=a[j]) then
      inc(c);
    end;
  end;
  if (c=0) then
  result:=true
  else
  result:=false;
end;
begin
  initIntArrayOfSeven(a);
  writeln('Unikalni li znachenia nassiva :',checkUnic(a));
  readln;
end.                       

vedro-compota's picture

тут можно добавить break; для оптимизации

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

program U17Z1;
const n=7;
var a: array[1..n] of integer;
  i,j,c:integer;
  procedure initIntArrayOfSeven(var a: array of integer);
var min, max: integer;
begin
   randomize();
   min := 1;
   max := 15;
   for i:=low(a) to high(a) do
      a[i] := min + random(max - min + 1);
end;
function checkUnic(a: array of integer):boolean;
begin
  for i:=low(a) to n-1 do
  begin
    for j:=i+1 to n do
    begin
      if (a[i]=a[j]) then
      inc(c);
        if (c>0) then
          break;
    end;
    if (c>0) then
          break;
  end;
  if (c=0) then
    result:=true
  else
    result:=false;
end;
begin
  initIntArrayOfSeven(a);
    writeln('Unikalni li znachenia nassiva :',checkUnic(a));
  readln;
end.