Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как найти моду в массиве на PASCAL?

НИКИТА Чупров Ученик (95), закрыт 10 лет назад
Дополнен 10 лет назад
Мода - это число, которое встречается больше всего раз.
Лучший ответ
Остальные ответы
Александр Иванов Высший разум (207606) 10 лет назад
Во внутреннем цикле с параметром сравниваешь первый элемент с остальными и увеличиваешь счетчик на единицу в случае равенства. Потом второй, третий и т. д. Во внешнем цикле сравниваешь каждый раз значение счетчика с максимальным из предыдущих. Не совсем оптимально, но просто и работать будет.
Алексей Молчанов Мастер (1648) 10 лет назад
Как-то так:


Результат oldmd и будет являться модой. data_array - массив чисел, count - размерность массива.
Честно, нашёл в своём старом проекте, который писал на C и наскоряк переписал на Pascal. Работоспособность не проверял, но всё должно быть корректно.
Nelu Leg Гуру (2792) 10 лет назад
const
n = 5;//Размер массива чисел.
a = 1; b = 5;//Диапазон рандомных чисел, например от одного до пяти.
var
Ar:array [1..n] of integer; //Ar - массив чисел.
ctrAr:array [a..b] of integer;// ctrAr - массив-счётчик чисел из массива Ar.
i,j: integer;
maxCtr,index:integer;//Счётчик максимально встречающегося числа и один из его индексов в массиве Ar.
begin

//В этом цикле генерируем случайные числа и выводим их на экран.
for i := 1 to n do begin
Ar[i] := random (b - a) + a;
write(ar[i],' ');
end;
writeln();

//Обнуляем массив-счётчик.
for i := 1 to n do ctrAr[i] := 0;

//Обнуляем переменную для количества повторов самой частой цифры.
maxCtr := 0;

//В этом цикле пройдёмся по массиву чисел - Ar.
for j := 1 to n do
for i := a to b do begin //А в этом пройдёмся по массиву-счётчику ctrAr.
if(Ar[j] = i) then inc(ctrAr[i]);//Если значение ячейки массива равно числу i (напрмер 3), то увеличим на единицу значение ячейки массива-счётчика с этим индексом (ctrAr[3]).
if(ctrAr[i] > maxCtr) then begin
maxCtr := ctrAr[i];//Наёдём максимум в массиве-счётчике ctrAr.
index := j;//И индекс максимум в массиве чисел Ar.
end;
end;

writeln('Мода - ',Ar[index],'. Повторяется ',maxCtr,' раз. ');

end.
Похожие вопросы