Array47. Дан целочисленный массив размера $$N$$. Найти количество различных элементов в данном массиве.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
program Array47; var a:array[1..10] of integer; N,i,i2,Num:Integer; check: Boolean; begin Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; Num:=0; for i:=1 to N do begin check:=true; for i2:=i+1 to N do if a[i]=a[i2] then check:=False; if check then inc(Num); end; Writeln(Num); end. |
Решение2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{$APPTYPE CONSOLE} program Array47; var a:array[1..10] of integer; N,i,i2,Num:Integer; begin Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; Num:=1; for i:=2 to N do begin inc(Num); for i2:=i-1 downto 1 do if a[i]=a[i2] then begin dec(Num); break; end; end; Writeln(Num); end. |
Задачи из раздела Array можно посмотреть здесь.
Пытаюсь перевести задание с русского на русский. Судя по всему, под «различными» в задании подразумевались «не повторяющиеся» элементы? Т.е. в примере
1 1 2 3
ответом должно быть число 2? Поначалу сам сделал как вар1, но потом подумал, что сканировать надо каждый раз с начала, т.к. если начать сравнение с превой единицы, то она для программы повторяется, а когда внешний счетчик добирается до второго элемента и сравнивает с оставшимися, то единица воспринимается как уникальный элемент. В итоге сделал так:
Строка 5:
мм….
вы понимаете это задание, как поиск уникальных элементов в массиве.
ну a различный… 1 же отличается от 2 и 3… почему его не считают, только из за того что в массиве ещё есть один элемент 1?
то есть в примере 1 1 2 3 я думаю должен быть ответ 3 (различными являются 1, 2 и 3).