Дан целочисленный массив. сформировать второй массив всех таких различных значений, которые в первом массиве встречаются по два и более раза. type massiv=array[1..100] of integer; var a,b: massiv; j,i,n,g,buf,k,c: integer; begin randomize; write('ввод n='); read(n); writeln('ввод массива: '); for i: =1 to n do a[i]: =random(20)-5; write('('); for i: =1 to n do write(a[i],'; '); write(')'); writeln; j: =1; for i: =1 to n do for k: =i+1 to n do while j< =n do begin if a[i]=a[k] then inc(c); if c> =2 then begin c: =0; buf: =a[i]; b[j]: =buf; inc(j); end; end; writeln('новый массив: '); for j: =1 to n do write(b[j]: 4); readkey end. //что не так в этом
var
a,b:Massiv;
n,i,j,p:integer;
begin
randomize;
write('Ввод n=');
readln(n);
writeln('Нужно неубывание (1) или невозрастание (2)?');
readln(p);
if p=2 then p:=-1;
writeln('Массив:');
a[1]:=random(20)-5;
for i:=2 to n do a[i]:=a[i-1]+p*random(5);
write('(');
for i:=1 to n do write(a[i],' ');
write(')');
writeln;
i:=1; j:=0;
while i<n do
begin
if a[i]=a[i+1] then begin inc(j); b[j]:=a[i]; end;
while (i<n)and(a[i]=a[i+1]) do inc(i);
inc(i);
end;
writeln('Новый массив:');
for i:=1 to j do write(b[i]:4);
readkey
End.
Пример:
Ввод n=20
Нужно неубывание (1) или невозрастание (2)?
1
Массив:
(11 12 12 12 16 16 17 21 25 25 26 30 30 32 36 36 38 42 45 47 )
Новый массив:
12 16 25 30 36
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),1,9); a.Println;
var d:=new dictionary<integer,integer>;
foreach var e in a do d[e]:=d.Get(e)+1;
var s:=d.Where(x->x.Value>1).Select(x->x.Key);
if s.Count=0 then Writeln('Нет дублирующихся элементов')
else begin
Write('Дублирующиеся элементы: '); s.Println;
Write('В порядке возрастания: '); s.Sorted.Println
end
end.
Пример
n= 20
6 8 7 3 8 6 4 9 9 3 6 1 6 6 9 7 2 5 9 9
Дублирующиеся элементы: 6 8 7 3 9
В порядке возрастания: 3 6 7 8 9