Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2008, 19:02   #1
QWERT12345
 
Регистрация: 14.11.2008
Сообщений: 4
По умолчанию Расположить элементы массива в порядке убывания частоты встречаемости элементов.

В массиве записаны целые числа от 1 до 25. Расположить элементы
массива в порядке убывания частоты встречаемости элементов.
решить нужно в паскале
заранее спасибо
QWERT12345 вне форума Ответить с цитированием
Старый 14.11.2008, 19:54   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,216
По умолчанию

Ваш вариант решения?
Arigato вне форума Ответить с цитированием
Старый 14.11.2008, 21:11   #3
QWERT12345
 
Регистрация: 14.11.2008
Сообщений: 4
По умолчанию

мой вариант:
в массив записать сколько раз встречается каждый элемент
например
начальный массив
1 2 2 1 1 3
получится
3 2 0 0 0 1

а вот как потом сделать
, чтобы выводило в порядке убывания встречаемости не знаю
QWERT12345 вне форума Ответить с цитированием
Старый 14.11.2008, 21:18   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В Вашем примере если исходный будет 1 2 2 1 1 3,
то результат 1 1 1 2 2 3
puporev вне форума Ответить с цитированием
Старый 14.11.2008, 21:37   #5
QWERT12345
 
Регистрация: 14.11.2008
Сообщений: 4
По умолчанию

нет-нет
массив
3 2 0 0 0 1
показывает сколько каждая цифра встречается в массиве. 0 в том случае если эта цифра уже была рассмотрена раньше
QWERT12345 вне форума Ответить с цитированием
Старый 14.11.2008, 21:40   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

3 2 0 0 0 1 это промежуточный массив, а 1 1 1 2 2 3 - результат, так как по условию нужно
Цитата:
Расположить элементы массива в порядке убывания частоты встречаемости элементов.
puporev вне форума Ответить с цитированием
Старый 14.11.2008, 21:46   #7
QWERT12345
 
Регистрация: 14.11.2008
Сообщений: 4
По умолчанию

я понимаю что нужно, но КАК это в впаскале написать не знаю
QWERT12345 вне форума Ответить с цитированием
Старый 14.11.2008, 22:30   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот вариант с применением двух дополнительных массивов. В одном храним значение элементов, в другом их количество. Это можно заменить на один массив записей. Если Вы с ними знакомы, сами легко переделаете.
Код:
uses crt;
var a,b,c:array[1..50]of byte;
    n,i,j,k,l,t,x,y:byte;
begin
clrscr;
randomize;
write('n=');readln(n);
writeln('Ishodnuj massiv:');
for i:=1 to n do
  begin
    a[i]:=random(25)+1;
    write(a[i],' ');
  end;
writeln;
i:=0;b[i]:=1;
while i<=n do
   begin
     i:=i+1;
     b[i]:=1;c[i]:=a[i];//сначала количество=1, запоминаем элемент из массива А
     for j:=n downto i+1 do
     if a[j]=a[i] then //если нашли такое же число, то
       begin
         b[i]:=b[i]+1; //увеличиваем его количество
         for l:=j to n-1 do
         a[l]:=a[l+1]; //сдвигом массива удаляем его
         n:=n-1;//уменьшаем длину массива
       end;
   end;
for k:=1 to n-1 do
for t:=1 to n-1 do
if b[t]<b[t+1] then //сортируем по уменьшению встречаемости оба новых массива
   begin
    x:=b[t];
    y:=c[t];
    b[t]:=b[t+1];
    c[t]:=c[t+1];
    b[t+1]:=x ;
    c[t+1]:=y ;
   end;
writeln('Rezultat:');
for j:=1 to n do  //от первого элемента до последнего из оставшися
for k:=1 to b[j] do //выводим его столько раз, сколько оно встретилось
write(c[j],' ');
readln
end.
readln
end.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Повторяющиеся элементы массива Stanislav Общие вопросы Delphi 10 23.05.2008 12:31
Помогите!Срочно! "Составьте программу получения в порядке убывания всех делителей данного числа" koston Паскаль, Turbo Pascal, PascalABC.NET 2 26.03.2008 12:34
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов Scudetto Общие вопросы C/C++ 7 21.10.2007 20:46