Упорядочить массив строк по частоте повторов - Turbo Pascal
Формулировка задачи:
Здравствуйте, уважаемые программисты...задача такова... требуется упорядочить массив строк по возрастанию частоты повторов... например массив такой rock, join, com, join, rock, join... после работы программа должна вывести вот такой результат
com
rock
join
Заранее спасибо!)
Решение задачи: «Упорядочить массив строк по частоте повторов»
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.
Объяснение кода листинга программы
Этот код написан на Turbo Pascal и выполняет следующие действия:
- Запрашивает у пользователя размер массива слов от 2 до 20.
- Запрашивает у пользователя n слов для ввода.
- Вводит n слов и сохраняет их в массиве a.
- Создает структуру zap для хранения слова и его частоты повторения.
- Инициализирует массив b, который будет использоваться для хранения слов в порядке возрастания частоты повторения.
- Заполняет массив b словами из массива a, начиная с первого введенного слова.
- Использует алгоритм сортировки выбором для сортировки массива b в порядке возрастания частоты повторения.
- Выводит отсортированный массив b и количество слов в нем.
- Выводит каждое слово из отсортированного массива b.
- Выводит последнее слово из массива a (которое не было учтено при сортировке).