Как найти количество минимальных элементов в массиве?

Нужно найти количество элементов равных минимальному. Выводит неправильное количество

var
  s, i: integer;
  A: array [1..5] of integer;
  min := 367131;

begin
  randomize; 
  for i := 1 to 5  do 
    a[i] := Random(1, 5);
  begin
    for i := 1 to 5 do write(a[i], ' ');
    for i := 1 to 5 do
    begin
      if (a[i] < min) and (a[i] >= 0) then  
      begin
        min := a[i]; 
      end;
      if a[i] = min then 
      begin
        s := s + 1; 
      end;
    end;
  end;
  writeln('Минимальный:', min, ' Количество - ', s);
end.

Ответы (1 шт):

Автор решения: Sergey Tatarincev

Необходимо 2 цикла - в одном искать минимум, во втором подсчитывать количество равных минимуму, либо в вашем цикле при нахождении нового минимума обнулять счетчик:

for i := 1 to 5 do
    begin
      if (a[i] < min) and (a[i] >= 0) then  
      begin
        min := a[i];
        s : = 0;
      end;
      if a[i] = min then 
      begin
        s := s + 1; 
      end;
    end;

В вашей реализации подсчитается количество элементов равных или меньше ВСЕХ предыдущих.

И еще. переменную s в начале программы надо инициализировать s:=0;

→ Ссылка