Дан упорядоченный целочисленный массив. Сформировать второй массив всех таких различных...

0 голосов
74 просмотров

Дан упорядоченный целочисленный массив. Сформировать второй массив всех таких различных значений, которые в первом массиве встречаются по два и более раза.
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<br> 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.
//Что не так в этом коде?(((Q


Информатика (39 баллов) | 74 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1385 от 14.02.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),1,9); a.Println;
  var d:=new dictionary;
  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
(150k баллов)
0 голосов

Type Massiv=array[1..100] of integer;
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 begin
  if a[i]=a[i+1] then begin inc(j); b[j]:=a[i]; end;
  while (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

(194k баллов)
0

Не всегда, через раз.