Тема: Массивы
Показать сообщение отдельно
Старый 13.07.2011, 10:07   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Придумал один довольно-таки тупой алгоритм. Но работает. Реализация, к сожалению, на Паскале - на Си я не пишу. Полагаю, что перевести с языка на язык проблем не составит. Если, конечно, алгоритм устроит.
Суть:
1. Ищется максимальное значение исходного массива (М).
2. Путем последовательного перебора натуральных чисел (i) от 0 до М заполняется массив счетчиков количества вхождений каждого i в исходный массив.
3. Организован вывод опять же чисел i от 0 до М и соответствующих значений счетчиков, но только тех, где счетчики отличны от нуля.
Всё.
Код:
const
 n=7;
 array1:Array[1..n] of Integer= (3,8,3,12,11,8,8);  // оригинальный массив
var
 array3:Array[0..1000] of Integer;                // массив счетчиков
 M,i,j:Integer;
BEGIN
 M:=0;
 for i:=1 to n do
  if array1[i]>M then M:=array1[i];
 for i:=0 to M do array3[i]:=0;
 for i:=0 to M do
  for j:=1 to n do
   if array1[j]=i then Inc(array3[i]);
 for i:=0 to M do
  if array3[i]>0 then
   writeln(i:4,' - ',array3[i]);
 readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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