Найти в массиве число, которое повторяется наибольшее количество раз - Pascal ABC
Формулировка задачи:
есть много похожих тем, но мне нужно что бы если есть не одно число. которое повторяется не раз тоже выводилось.
пример кода, который показывает только одно из:
тоесть если значения масива будут:0 0 1 1, то должно вывести что и 1-2 раза и 0-2 раза.
надеюсь на Вашу помощь.
Решение задачи: «Найти в массиве число, которое повторяется наибольшее количество раз»
textual
Листинг программы
const nmax=100;
a1=-5;
a2=5;
var a: array[1..nmax] of integer;
b:array[a1..a2] of integer;
n,i,max,imax: integer;
begin
randomize;
write('Введите размер массива от 2 до ',nmax,' n=');
readln(n);
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=a1+random(a2-a1+1);
write(a[i]:4);
end;
for i:=a1 to a2 do
b[i]:=0;
for i:=1 to n do
inc(b[a[i]]);
writeln('Повторяющиеся числа');
max:=0;
imax:=0;
for i:=a1 to a2 do
if b[i]>1 then
begin
writeln(i:4,' ',b[i],'рз.');
if b[i]>max then
begin
max:=b[i];
imax:=i;
end;
end;
writeln('Чаще других встречается число ',imax,' ',max,'рз.')
end.
Объяснение кода листинга программы
- Создаётся константа nmax, которая определяет максимальное значение индекса массива.
- Создаются две переменные a1 и a2, которые определяют границы диапазона случайного выбора чисел для заполнения массива.
- Создаётся переменная a, которая представляет собой массив для хранения чисел.
- Создаются две переменные b и n, которые будут использоваться для подсчёта повторений чисел в массиве.
- Используется функция randomize для инициализации генератора случайных чисел.
- Пользователю предлагается ввести размер массива от 2 до nmax.
- Выводится сообщение с содержимым массива.
- Для каждого i от 1 до n выполняется следующая последовательность действий:
- a[i] присваивается значение a1+random(a2-a1+1), то есть генерируется случайное число в заданном диапазоне.
- Выводится значение a[i].
- В массиве b увеличивается значение b[a[i]] на единицу.
- Выводится сообщение о повторяющихся числах.
- Инициализируются переменные max и imax, которые будут использоваться для хранения максимального и текущего повторно встречающегося числа.
- Для каждого i от a1 до a2 выполняется следующая последовательность действий:
- Если b[i] больше 1, то выводится номер i, значение b[i] и слово
раз. - Если b[i] больше max, то max присваивается значение b[i], а imax присваивается значение i.
- Если b[i] больше 1, то выводится номер i, значение b[i] и слово
- Выводится сообщение с номером и значением наиболее часто встречающегося числа.