Другой вариант:
Код:
program calc;
uses crt;
var
a: array[1..10000] of integer;
exz: array[0..9] of integer;
n, i, k, j: integer;
begin {Начало программы}
clrscr;
writeln('Введите количество элементов массива');
readln(n);
writeln('Начинаем заполнение массива ',n,' значениями');
for i:=1 to n do {Цикл заполнения массива}
begin
writeln('Введите значение ',i,'-го элемента');
read(a[i]);
if a[i]<1 then begin writeln('Вы ввели не натуральное число, пожалуйста, повторите.'); i:=i-1; end;
end;
{начинаем анализ массива}
for i:=1 to n do
begin
while a[i] >0 do
begin
j:=a[i] mod 10;
exz[j]:=exz[j]+1;
a[i]:=a[i] div 10; end; end;
{начинаем обрабатывать результирующий массив}
k:=exz[0];
for i:=0 to 9 do
if exz[i]>k then begin k:=exz[i]; j:=i; end;
writeln('Наиболее часто в массиве встречается цифра ',j);
readln;
end.
Извиняюсь, заметил ошибки. Исправил и проверил, все работает, правда, от первого варианта листинг не очень отличается, лишь в деталях
. Отдельное спасибо Long Cat за замечания
.
З.Ы. Внимание! В обоих вариантах не обрабатываются одинаковые значения в результирующем массиве, просто находится первый наибольший элемент и выводится, остальные с тем же значением игнорируются.
З.З.Ы. Тему подчистил от промежуточного обсуждения.