Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43

Частотный анализ текста

05.11.2016, 20:48. Показов 6309. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите решить данную задачу.
В исходном текстовом файле хранится информация в виде символьных строк произвольной длины. Провести частотный анализ текста: посчитать количество слов, начинающихся на различные буквы русского и английского алфавита. В новый файл в каждую строку записать букву и количество слов, начинающихся на эти буквы.
Как это делал я. Не могли бы подсказать,где ошибка?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
Добавлено через 1 час 11 минут
Окей, теперь проблема в другом. Как включить в этот массив русские буквы? Или для них этот метод не подойдёт?
Ведь их нет в ASCII
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2016, 20:48
Ответы с готовыми решениями:

Частотный анализ текста.
Дан файл, содержащий текст, набранный заглавными русскими буквами. В нем содержатся также знаки препинания. Провести частотный анализ...

Провести частотный анализ текста файла
С текстовыми файлами еще не работал...прошу помочь в написании программы... Или объяснить что тут делать....заранее благодарен... ...

Провести его частотный анализ текста
2)Дан текст. Преобразовать его, записав его слова с заглавных букв и провести его частотный анализ, т.е. определить (в процентном...

11
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 21:03
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var f:text;
    x:array[0..255] of integer;
    s:string;
    i:integer;
begin
assign(f,'input.txt');
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(f,'output.txt');
rewrite(f);
for i:=0 to 255 do
if x[i]>0 then
writeln(f,char(i),' ',x[i]);
close(f);
writeln('Файл input.txt прочитан, статистика записана в файл output.txt')
end.
Добавлено через 1 минуту
Цитата Сообщение от katze Посмотреть сообщение
Ведь их нет в ASCII
А Вы в каком Паскале пишете?
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43
05.11.2016, 21:08  [ТС]
По прежнему не работает для русских букв
В ABC
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 21:14
Если Турбо или Free, то нужно текст конвертировать из ANSI В ASCII.
Можно взять здесь.
Конвертация строк

Добавлено через 3 минуты
В АВС не может не работать с кириллицей, коды русских букв
для представления символов кириллицы (без букв “ё” и “Ё” используются последние 64 кода (от 192 до 256): “А”…“Я” кодируются значениями 192…223, “а”…“я” – 224…255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184.
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43
05.11.2016, 21:15  [ТС]
Для ABC это не нужно делать?
Потому что пытался конвертировать, но не получалось.

Добавлено через 37 секунд
То есть мне надо делать задание абсолютно по другому?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 21:16
Я писал в АВС, вот исходный файл
фыфыв ироор оиоо оиоо тото
торо ттто рмпрммп рирр ририр
бдбд дздщздз тоошш вавквк
Вот результат.
б 1
в 1
д 1
и 1
о 2
р 3
т 4
ф 1

Добавлено через 1 минуту
Не нужно Вам ничего конвертировать, пишите как у меня написано.
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43
05.11.2016, 21:23  [ТС]
У меня выводит вот что
1 1
2 1
4 1
8 1
> 2
@ 3
B 4
D 1
Вот весь код программы
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
  readln(gname);
  task2(f,g,fname,gname);
  writeln('Смотрите результат в файле'); end
  else writeln('Файл с таким именем уже существует!');
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 21:40
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Не знаю, взял ваш код, чуть поправил
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
в 1
д 1
и 1
о 2
р 3
т 4
ф 1

Добавлено через 43 секунды
Покажите Ваш исходный файл.

Добавлено через 3 минуты
Все понял, вы пишете не в АВС, а в АВС.net. почему там такое, я не знаю эту пародию на Паскаль.
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43
05.11.2016, 21:41  [ТС]
Вот этот файл.
Вложения
Тип файла: txt in.txt (85 байт, 23 просмотров)
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 21:43
Уже не нужно, я написал почему.
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 43
05.11.2016, 21:58  [ТС]
Я не видел, когда отправлял, извините. Сейчас установлю нормальный ABC и посмотрю.
Спасибо Вам большое.
Вот только вопрос, примут ли. Нам вроде разрешали только АBC.net разрешали

Добавлено через 6 минут
Спасибо большое, всё работает.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.11.2016, 22:28
Да, иногда нужно глаза открывать, напишите chr(i) вместо char(i) в строке
Pascal
1
 write(g,char(i), ' ' ,x[i]);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2016, 22:28
Помогаю со студенческими работами здесь

Провести частотный анализ текста файла
Дан файл,содержащий текст,набранный заглавными русскими буквами.Провести частотный анализ текста,т.е. указать(в процентах),сколько раз...

Провести частотный анализ текста: посчитать, сколько различных символов встречается в данном тексте
4.19. Файл содержит информацию в виде символьных строк произвольной длины. Провести частотный анализ текста: посчитать, сколько различных...

Провести частотный анализ файла
Оч прошу! Суть проги: Создать файл, содержащий текст на инглише, заглавными буквами. После чего провести частотный анализ, т.е. указать в...

Частотный анализ текстового файла
частотный анализ текстового файла. Напишите программу, определяющую частоту встречающихся символов в текстовом файле. По этим данным...

Частотный анализ встречаемости букв русского алфавита
Задача: Проведите частотный анализ встречаемости символов и пар символов для алфавита русского языка Результаты анализа должны быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru