Частотный анализ текста - Pascal
Формулировка задачи:
Добрый день! Помогите решить данную задачу.
В исходном текстовом файле хранится информация в виде символьных строк произвольной длины. Провести частотный анализ текста: посчитать количество слов, начинающихся на различные буквы русского и английского алфавита. В новый файл в каждую строку записать букву и количество слов, начинающихся на эти буквы.
Как это делал я. Не могли бы подсказать,где ошибка?
procedure task2(var f,g:text); var x:array[0..255] of integer; s:string; i:integer; begin for i:=0 to 255 do x[i]:=0; while not (eof(f)) do begin readln(f,s); for i:=1 to length(s)-1 do begin if s[i] in [' ',#10] then inc(x[byte(s[i+1])]); end; for i:=0 to 255 do if x[i]>0 then begin write(g,char(i), ' ' ,x[i]); writeln(g); end; end; end;
Окей, теперь проблема в другом. Как включить в этот массив русские буквы? Или для них этот метод не подойдёт?
Ведь их нет в ASCII
Решение задачи: «Частотный анализ текста»
textual
Листинг программы
uses crt; procedure task2(var f,g:text;fname,gname:string); var x:array[0..255] of integer; s:string; i:integer; begin assign(f,fname); reset(f); for i:=0 to 255 do x[i]:=0; while not (eof(f)) do begin readln(f,s); for i:=1 to length(s)-1 do if (s[i]<>' ')and((i=1)or(s[i-1]=' '))then inc(x[byte(s[i])]); end; close(f); assign(g,gname); rewrite(g); for i:=0 to 255 do if x[i]>0 then writeln(g,char(i),' ',x[i]); close(g); end; var f,g:text; i:integer; gname,fname:string; begin writeln('Введите имя исходного файла'); readln(fname); if FileExists(fname) then begin writeln('Введите имя результирующего файла'); readln(gname); task2(f,g,fname,gname); writeln('Смотрите результат в файле'); end else writeln('Файл с таким именем не найден!'); end.
Объяснение кода листинга программы
- Импортируется модуль
crt
. - Объявляется процедура
task2
, принимающая в качестве параметров переменные-файлыf
иg
, строковые переменныеfname
иgname
. - Создается массив
x
размером 256 элементов и заполняется нулями. - Открывается файл с именем
fname
для чтения. - Происходит чтение строк из файла
f
и подсчёт количества встреченных символов в каждой строке. - Файл
f
закрывается. - Открывается файл
g
с именемgname
для записи. - Происходит запись в файл
g
символов и их количества из массиваx
. - Файл
g
закрывается. - Объявляются переменные
f
,g
,i
,gname
иfname
. - Выводится сообщение
Введите имя исходного файла
и считывается значение в переменнуюfname
. - Если файл с указанным именем существует, то программа переходит к следующим шагам, иначе выводится сообщение
Файл с таким именем не найден!
. - Выводится сообщение
Введите имя результирующего файла
и считывается значение в переменнуюgname
. - Вызывается процедура
task2
с параметрамиf
,g
,fname
иgname
. - Выводится сообщение
Смотрите результат в файле
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д