Как найти количество минимальных элементов в массиве?
Нужно найти количество элементов равных минимальному. Выводит неправильное количество
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;