Удалить из массива все элементы встречающиеся ровно 2 раза — Pascal(Паскаль)

uses crt;
const max=100;
var a:array[1..max] of integer;
    n,i,j,k,p,q:byte;
    x:integer;
begin
clrscr;
repeat
write('Размер массива n=');
readln(n);
until n in [1..max];
writeln('Введите ',n,' целых чисел:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Исходный массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
i:=1;
while i<=n do{идем по массиву}
 begin
  k:=0;
  for j:=i+1 to n do{смотрим впереди}
  if a[j]=a[i] then k:=k+1;{если совпадает, считаем}
  if k=1 then{если 1 совпадение}
   begin
    p:=i;x:=a[i];{фиксируем индекс, запоминаем элемент}
    while p<=n do{пока не конец массива}
    if a[p]=x then{находим совпадпющий}
     begin
      for q:=p to n-1 do{сдвигаем к нему влево конец массива}
      a[q]:=a[q+1];{на 1}
      n:=n-1;{уменьшаем размер массива}
     end
    else p:=p+1;{иначе идем вперед}
   end
  else i:=i+1;{иначе идем вперед}
 end;
writeln('n=',n);
writeln('Массив после сжатия:');
for i:=1 to n do
write(a[i],' ');
readln
end.

Leave a Comment

59 − 50 =