Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее трех раз, и вывести размер полученного массива и его содержимое

code: #pascal
Program Array98;
 
Var A: Array Of Integer;
  SIZE, i, j, k, p, x : Integer;
 
Begin
  Randomize;
  Write('Размер массива -> ');
  ReadLn(SIZE);
  SetLength(A, SIZE);
 
{ Заполняем массив случайно }
  WriteLn('In array');
  For i := 0 To SIZE - 1 Do
  Begin
    A[i] := Random(89) + 10;
    Write(A[i]:3);
  End;
  WriteLn;
 
  i := 0;
 
  While i < SIZE Do
  Begin
    k := 1;
 
    For j := i+1 To SIZE - 1 Do
      If a[j] = a[i] Then k := k + 1;
 
    If k > 3 Then
    Begin {2}
      j := i;
      x := A[i];
 
      While j < SIZE Do
        If A[j] = x Then
          Begin {1}
            For p := j To SIZE - 2 Do
              A[p] := A[p + 1];
            SIZE := SIZE - 1;
          End {1}
        Else 
          j := j + 1;
    End {2}
    Else 
      i := i + 1;
  End;
 
  If SIZE = 0 Then 
    Write('Все элементы удалены:(') { Выводим, что все элементы удалены }
  Else
   Begin
     WriteLn('Оставшиеся элементы -> ',SIZE);
     WriteLn('Массив после сжатия');
     For i := 0 To SIZE - 1 Do
       Write(a[i]:3);
   End;
  WriteLn;
  ReadLn;
End.

автор: Kuznetsov Nikolai a.k.a. Lemac