Есть ли в массиве одинаковые элементы

Задача

Дан массив целых чисел. Проверить, есть ли в нем одинаковые элементы.

Решение

 

Чтобы проверить каждый элемент массива на уникальность, надо сравнить его с остальными элементами. Так первый элемент следует сравнить со вторым, третьим и т. д. до конца. После этого второй элемент - с третьим, четвертым и т. д. Второй элемент с первым сравнивать не надо, т.к. они уже сравнивались при оценке уникальности первого элемента. Когда очередь дойдет до предпоследнего элемента, то он сравнивается только с последним. Последний же уже сравнивать не надо. Таким образом, количество итераций внешнего цикла на 1 меньше, чем элементов в массиве. Счетчик этого цикла - это номер элемента, который сравнивается с элементами стоящими после него.

Внутренний цикл перебирает элементы от следующего за исследуемым до последнего. На данном отрезке элементы массива сравниваются с исследуемым элементом. Если какой-то элемент окажется равен исследуемому, то значит, что в массиве есть одинаковые значения. Следует вывести соответствующее сообщение и завершить программу, т.к. дальше уже можно не проверять.

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

Программа на языке Паскаль: 

 

const N = 10;
var
    arr: array[1..N] of byte;
    i, k: byte;
begin
    randomize;
    for i:=1 to N do begin
        arr[i] := random(80);
        write(arr[i]:3);
    end;
    writeln;
 
    for i:=1 to N-1 do 
        for k:=i+1 to N do 
            if arr[i] = arr[k] then begin
                writeln('Есть одинаковые элементы');
                exit;
            end;
    writeln('Все элементы уникальны');
end.

 

Примеры выполнения кода:

 13 76 31 13 32 18  2 70 76  8
Есть одинаковые элементы
 59 11 18 46 25 39 44 10 23  6
Все элементы уникальны

 

Тема

Одномерные массивы

Уровень

Комбинированные задачи

Теги

Добавить комментарий