Частотный анализ текста - 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.

Объяснение кода листинга программы

  1. Импортируется модуль crt.
  2. Объявляется процедура task2, принимающая в качестве параметров переменные-файлы f и g, строковые переменные fname и gname.
  3. Создается массив x размером 256 элементов и заполняется нулями.
  4. Открывается файл с именем fname для чтения.
  5. Происходит чтение строк из файла f и подсчёт количества встреченных символов в каждой строке.
  6. Файл f закрывается.
  7. Открывается файл g с именем gname для записи.
  8. Происходит запись в файл g символов и их количества из массива x.
  9. Файл g закрывается.
  10. Объявляются переменные f, g, i, gname и fname.
  11. Выводится сообщение Введите имя исходного файла и считывается значение в переменную fname.
  12. Если файл с указанным именем существует, то программа переходит к следующим шагам, иначе выводится сообщение Файл с таким именем не найден!.
  13. Выводится сообщение Введите имя результирующего файла и считывается значение в переменную gname.
  14. Вызывается процедура task2 с параметрами f, g, fname и gname.
  15. Выводится сообщение Смотрите результат в файле.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы