Начнем опять с определения, что в задаче дано. Мы имеем одномерный массив, состоящий из m элементов. Нужно получить число, определяющее количество различных чисел в массиве.

    Понятно, что нужно сравнивать элементы между собой. Однако, лучше сравнивать текущий элемент не с предшествующими, а с последующими, до первого повторения. Если, пройдя до конца массива, мы не найдем одинакового, то количество различных элементов нужно увеличить на 1. Например, если дан массив: 5, 7, 5, то сравнивая первую пятерку со всеми остальными элементами, мы найдем ей равную (это третий элемент массива). Поэтому количество различных элементов не увеличиваем. Повторяя эти операции для второго и третьего элементов, мы не находим для них одинаковых. Поэтому количество различных элементов в массиве равно 2. Приведем текст программы:

Program Problem30_1; 
Var
  A: Array[1..250] Of Integer;
  m,i,j,s:Integer;
  b:Boolean;
Begin
  Write('Задайте количество элементов массива: ');
  ReadLn(m);
  WriteLn('Укажите элементы массива');
  For i:=1 To m Do
   Begin
    Write(i,'-й элемент: ');
    ReadLn(A[i]);
   End;
  s:=0; {Количество различных элементов}
  For i:=1 To m Do {Берем текущий элемент}
   Begin
    b:=False; {Считаем, что это число единственное}
    j:=i+1; {Проверку начинаем со следующего элемента}
    {Пока не просмотрены все элементы и не найден совпадающий}
    While (j<=m) And Not b Do
     Begin
        If A[i]=A[j] Then b:=True; {Есть совпадение!}
        j:=j+1;
     End;
    If Not b Then s:=s+1; {Если не было совпадения, то увеличиваем s}
   End;
  WriteLn('Количество различных элементов = ',s);
End.
Текст этой программы можно взять здесь.