Показать сообщение отдельно
Старый 13.09.2009, 17:24   #11 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Другой вариант:
Код:
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 за замечания .

З.Ы. Внимание! В обоих вариантах не обрабатываются одинаковые значения в результирующем массиве, просто находится первый наибольший элемент и выводится, остальные с тем же значением игнорируются.

З.З.Ы. Тему подчистил от промежуточного обсуждения.
__________________
Убить всех человеков!
AlexZir вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070