Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rogram laba3;
- uses
- crt;
- const
- Symb = ['a'..'z'];
- type
- mas = array['a'..'z'] of integer;
- procedure About;
- begin
- Writeln('Лабораторная работа №3.');
- Writeln('Вариант №14.');
- Writeln('Выполнил: Луника Иван Дмитриевич. Студент группы: 6102');
- Writeln('Условие: В исходном текстовом файле записаны строки, содержащие');
- Writeln('текст на английском языке. Требуется написать программу, которая');
- Writeln('для каждой строки исходного файла будет определять и выводить');
- Writeln('результирующий файл буквы, встречающиеся в этой строке в порядке');
- Writeln('уменьшения частоты их встречаемости. Строчные и прописные буквы');
- Writeln('при этом считаются не различными. Каждая буква, которая встречается');
- Writeln('в тексте, должна быть выведена ровно 1 раз. Если какие-то буквы');
- Writeln('встречаются одинаковое кол-во раз, то они выводятся в алфавитном');
- Writeln('порядке.');
- end;
- function Mass(s: string; var a: mas): string;
- var
- max, i: integer;
- res: string;
- c: char;
- begin
- res := ''; {зануляем строку}
- for c := 'a' to 'z' do a[c] := 0;{зануляем массив}
- for i := 1 to length(s) do {является ли число символом}
- if (Lowercase(s[i]) in Symb) then a[Lowercase(s[i])] := a[Lowercase(s[i])] + 1;
- max := a['a']; {условным максимумом считаем первый эл-т массива}
- for c := 'a' to 'z' do
- if (a[c] > max) then max := a[c]; {поиск максимума}
- while (max > 0) do {выписываем все символы в порядке уменьшения частоты их встречаемости}
- begin
- for c := 'a' to 'z' do
- if (a[c] = max) then res := res + c; {сравнивыем символ с максимумом}
- max := max - 1;
- end;
- result := res;
- end;
- procedure Alg(var f1, f2: text);
- var
- s, res: string;
- a: mas;
- begin
- reset(f1);
- rewrite(f2);
- while not eof(f1) do
- begin
- readln(f1, s);
- if s <> '' then {если строка из файла неравна нулевой}
- res := Mass(s, a)
- else res := ' ';
- writeln(f2, res);
- end;
- close(f1);
- close(f2);
- end;
- var
- f1, f2: text;
- fn1, fn2: string;
- begin
- About;
- write('Введите имя исходного файла: ');
- readln(fn1);
- if FileExists(fn1) then begin
- write('Введите имя результирующего файла: ');
- readln(fn2);
- assign(f1, fn1);
- assign(f2, fn2);
- Alg(f1, f2);
- end
- else writeln('Файл не существует');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement