Вывести неповторяющиеся элементы массива
Задача
В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.
Пояснение к задаче и алгоритм решения
Будем брать очередной элемент массива и сравнивать его со всеми остальными элементами массива от начала до конца. Если при сравнении два элемента окажутся равны друг другу, и при этом элемент не сравнивается сам с собой, то значит этот "исследуемый" элемент не уникальный. Дальнейшее сравнение этого элемента не имеет смысла, и надо перейти к следующему. Если же ни одного совпадения не было найдено, значит элемент не повторяется в массиве, и его надо вывести на экран.
В программе можно использовать переменную-флаг. Перед началом проверки уникальности элемента присвоить ей, например, значение 1. Если совпадение будет найдено, то присвоить флагу 0. Если же после всех сравнений флаг остался равен 1, то значит элемент массива не повторяется в нем.
Pascal
Исходный код на языке программирования Pascal
var
a: array[1..N] of word;
i,j: byte;
flag: boolean;
begin
randomize;
for i:=1 to N do begin
a[i] := random(15);
write(a[i],' ');
end;
writeln;
for i:=1 to N do begin
flag := True;
for j:=1 to N do
if (a[i] = a[j]) and (j <> i) then begin
flag := False;
break;
end;
if flag = True then
write(a[i],' ');
end;
writeln
end.
Пример(ы) выполнения программы на языке Pascal
12 7 6 14 11
Язык Си
Исходный код на языке программирования C
#define N 20
main() {
unsigned short a[N], i, j, f;
srand(time(NULL));
for (i=0; i<N; i++) {
a[i] = rand() % 15;
printf("%d ", a[i]);
}
printf("\n");
for (i=0; i<N; i++) {
f = 1;
for (j=0; j<N; j++)
if (a[i] == a[j] && i != j) {
f = 0;
break;
}
if (f == 1) printf("%d ", a[i]);
}
printf("\n");
}
Пример(ы) выполнения программы на языке C
7 1 13 0
Python
Исходный код на языке программирования Python
N = 20
a = [0] * N
for i in range(N):
a[i] = int(random()*15)
print(a[i],end=' ')
print()
for i in range(N):
f = True
for j in range(N):
if a[i] == a[j] and i != j:
f = False
break
if f == True:
print(a[i],end=' ')
print()
Пример(ы) выполнения программы на языке Python
3 12 11 4 7
Basic-256
Исходный код на языке программирования Basic
dim a(N)
for i=0 to N-1
a[i] = int(rand * 15)
print a[i] + " ";
next i
for i=0 to N-1
f = 1
for j=0 to N-1
if a[i] = a[j] and i <> j then
f = 0
endif
next j
if f = 1 then print a[i] + " ";
next i
Пример(ы) выполнения программы на языке Basic
8 7 2 13 9 11
Комментарий
ошибка в алгоритме
не убирает элемент если он более 3 раз повторяется
код python
Это не питоник код )
print(m)
С
добавьте 3 -> printf("%3d ", a[i]);