Нахождение повторяющихся элементов в массиве - Pascal
Формулировка задачи:
Программа несколько раз выводит повторяющийся элемент, как сделать так, чтобы программа выводила только один раз и все?
Решение задачи: «Нахождение повторяющихся элементов в массиве»
textual
Листинг программы
const N=10;
var
a,b:array [1..N] of integer;
i, j, k,l:integer;
z:boolean;
begin
randomize;
for i:=1 to N do
begin
a[i]:= random(1,N);
write(a[i]:3);
end;
writeln;
l:=0;
write('Эти числа повторяются: ');
for i:= 1 to N do
for j:= i+1 to N do
if a[i]=a[j] then begin
z:=true;
for k:=1 to l do
if a[i]=b[k] then begin
z:=false;
break;
end;
if z then begin
l:=l+1;
b[l]:=a[i];
end;
end;
if l=0 then writeln('отсутствуют повторяющиеся элементы') else
for i:=1 to l do write(b[i],' ');
end.
Объяснение кода листинга программы
- Объявляются константа N=10 и переменные a, b, i, j, k, l, z типа integer.
- В цикле for i:=1 to N выполняется заполнение массива a случайными числами от 1 до N.
- Выводится на экран содержимое массива a.
- Устанавливается счётчик повторяющихся чисел l=0.
- Выводится сообщение
Эти числа повторяются:и в цикле for i:= 1 to N выполняется поиск повторяющихся чисел в массиве a. - Если число a[i] повторяется, то устанавливается флаг z=true и выполняется поиск таких же чисел в массиве b.
- Если число a[i] не повторяется в массиве b, то оно добавляется в массив b с индексом l и увеличивается счётчик l.
- Если в массиве b нет повторяющихся чисел, то выводится сообщение
отсутствуют повторяющиеся элементы. - В противном случае выводится на экран содержимое массива b.