задача 10 урок 15

задача 10 урок 15

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

|1|5|4|5|6|7|8|
-- функция должна "сообщить", что он неуникальный

а для:

|1|15|4|5|6|7|8|
-- что уникальный.

РЕШЕНИЕ:

program task_10_lesson_15;
type arr = array[1..7] of integer;

procedure writeArray(ar : arr);   // процедура которая будет печатать наш массив
var i: integer;
begin
  for i := low(ar) to high(ar) do
    write(ar[i], ' ');
  writeln();
end;

function creatRandomArray(min, max: integer) : arr;  // функция создания массива(рандом)
var i: integer;
   ar : arr;
  begin
    randomize();
    for i := low(ar) to high(ar) do
      ar[i] := min + random(max - 1);
    result := ar;
  end;
function compElement(ar: arr) : integer;    // функция сравнения эл-ов
var i, c, j, r : integer;
begin
  r := 0;
  for i := 1 to (high(ar) - 1) do   // последнее сравнение 6 и 7 элемента
    begin
      c := i + 1;
      for j := c to high(ar) do
      if ar[i] = ar[j] then
         r += 1;
    end;
  result := r;
end;

var a: array[1..7] of integer;
  count : integer;
begin
  a := creatRandomArray(1, 15);
  count := compElement(a);
  if count > 0 then
  begin
     writeArray(a);
     writeln('Elents of our array aren`t unique')
  end
  else
  begin
     writeArray(a);
     writeln('All elements are unique');
  end;
  readln
end.

КОНСОЛЬ:

12 13 3 8 14 7 1
All elements are unique
vedro-compota's picture

compElement(ar: arr) : integer;  

-- логичнее возвращать boolean

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