Упорядочить массив строк по частоте повторов - Turbo Pascal

Формулировка задачи:

Здравствуйте, уважаемые программисты...задача такова... требуется упорядочить массив строк по возрастанию частоты повторов... например массив такой rock, join, com, join, rock, join... после работы программа должна вывести вот такой результат com rock join Заранее спасибо!)

Код к задаче: «Упорядочить массив строк по частоте повторов - Turbo Pascal»

textual
uses crt;
type st=string[10];
     zap=record
         s:st;
         k:integer;
         end;
var a:array[1..20] of st;
    b:array[1..20] of zap;
    x:zap;
    n,m,i,j,k:byte;
begin
clrscr;
repeat
write('Введите размер массива слов от 2 до 20 n=');
readln(n);
until n in [2..20];
writeln('Введите ',n,' слов');
for i:=1 to n do
 begin
  write('Слово ',i,': ');
  readln(a[i]);
 end;
clrscr;
writeln('Массив слов');
for i:=1 to n do
write(a[i],' ');
writeln;
m:=1;
b[m].s:=a[1];
b[m].k:=1;
for i:=2 to n do
 begin
  j:=1;
  k:=0;
  while(j<=m)and(k=0) do
  if a[i]=b[j].s then k:=1
  else inc(j);
  if k=1 then inc(b[j].k)
  else
   begin
    m:=m+1;
    b[m].s:=a[i];
    b[m].k:=1;
   end;
 end;
for i:=1 to m-1 do
for j:=i+1 to m do
if b[i].k>b[j].k then
 begin
  x:=b[i];
  b[i]:=b[j];
  b[j]:=x;
 end;
writeln('m=',m);
writeln('Слова в порядке возрастания встречаемости');
for i:=1 to m do
writeln(b[i].s);
readln
end.

12   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ