Решение 1 Задача 10 Урок 15

Урок 15

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

|1|5|4|5|6|7|8|

-- функция должна "сообщить", что он неуникальный
а для:

|1|15|4|5|6|7|8|

-- что уникальный.

type myArr = array[1..7] of integer;

var a: myArr;
    i: integer;

function f1(arr: array of integer) :String;
  var s: String;
      j: integer;
  begin
    s := 'Unikalniy';
    for i:=low(arr) to high(arr) do // наполняем и выводим в консоль
      for j:= i to high(arr) do // наполняем и выводим в консоль, j := i для скорости
        if (arr[i] = arr[j]) and (i <> j) then
          s := 'Ne unikalniy';
    result := s;
  end;

begin
  randomize();
  for i:=low(a) to high(a) do // наполняем и выводим в консоль
  begin
    a[i] := random(11) - 5;
    write(a[i], ' ');
  end;
  writeln();
  writeln(f1(a));
  readln();
end.

КОНСОЛЬ

-3 2 -4 2 3 -2 -5
Ne unikalniy
vedro-compota's picture

function f1(arr: array of integer) :String;

-- лучше возвращать логический тип

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

type myArr = array[1..7] of integer;

var a: myArr;
    i: integer;

function f1(arr: array of integer) :boolean;
  var s: boolean;
      j, y: integer;
  begin
    s := true;
   for j := low(arr) to high(arr) do // перебираем числа в массиве 
    begin
      for y := (j + 1) to high(arr) do // сравниваем с другими числами в массиве после j-го.
      begin
        if (arr[y] = arr[j]) and (y <> j) then
        begin
          s := false;
          break; //выходим из 2 цикла
        end;
        if not s then 
          break; //выходим из 1 цикла
      end;
    end;
    result := s;
  end;

begin
  randomize();
  for i := low(a) to high(a) do // наполняем и выводим в консоль
  begin
    a[i] := random(11) - 5;
    write(a[i], ' ');
  end;
  writeln();
  writeln('Unikalnost'' ', f1(a)); //вызов процедуры и вывод результата
  readln();
end.

КОНСОЛЬ

3 -5 -5 -5 -1 4 -2
Unikalnost' FALSE
vedro-compota's picture

засчитано

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