В строках из файла определить буквы, на которые начинаются слова, в порядке убывания частоты их употребления - Free Pascal
Формулировка задачи:
подскажите пожалуйста как определить буквы, на которые начинаются слова?!!!
Дан текстовый файл f. В каждой строке определить буквы, на которые начинаются слова, в порядке убывания частоты их употребления. Результат выполненных действий сохранить в текстовом файле g.
Решение задачи: «В строках из файла определить буквы, на которые начинаются слова, в порядке убывания частоты их употребления»
textual
Листинг программы
type let=record c:char; n:integer; end; var f,g:text; c:char; s:string; t:let; l:array[byte] of let; i:integer; j,k:byte; b:boolean; begin assign(f,'f'); reset(f); assign(g,'g'); rewrite(g); while not eof(f) do begin readln(f,s);b:=true; for i:=1 to length(s) do begin c:=s[i]; if not (c in ['a'..'z','A'..'Z','А'..'Я','а'..'я','ё','Ё']) then b:=true else if b then begin j:=ord(c); inc(l[j].n); l[j].c:=c; b:=false; end; end; for k:=0 to 254 do for j:=k+1 to 255 do if l[k].n<l[j].n then begin t:=l[k]; l[k]:=l[j]; l[j]:=t; end; b:=false; for k:=0 to 255 do if l[k].n>0 then begin write(g,l[k].c);l[k].n:=0;b:=true;end; writeln(g); end; close(f); close(g); end.
Объяснение кода листинга программы
- Создаются типы данных: record let с полями c:char и n:integer;
- Определяются переменные:
- f, g: text;
- c: char;
- s: string;
- t: let;
- l: array[byte] of let;
- i: integer;
- j, k: byte;
- b: boolean.
- Открываются файлы f и g для чтения и записи соответственно;
- В цикле while считывается каждая строка из файла f;
- В каждой строке ищутся буквы, на которые начинается слово;
- Если буква не является буквой русского или английского алфавита, то она пропускается;
- Если буква уже была учтена, то увеличивается её частота в массиве l;
- В конце каждой буквы записывается в файл g;
- Закрываются файлы f и g.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д