Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2012, 10:18   #1
dixonich
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 79
По умолчанию Частотный словарь.

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

Последний раз редактировалось dixonich; 21.09.2012 в 10:21.
dixonich вне форума Ответить с цитированием
Старый 21.09.2012, 10:29   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Начиная с начала массива символов, перебором (1 цикл), считать каждый символ во втором цикле "пока не конец массива". Посчитанные символы помещать в множество и при переходе к каждому новому символу проверять, есть он в сете или нет (посчитан или не посчитан)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 21.09.2012, 10:30   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
алгоритм ориентированный на Паскаль
Алгоритм - это алгоритм, последовательность действий. Он не может быть ориентирован на конкретную среду разработки или язык программирования... скорее как раз наоборот: алгоритм первичен по отношению к программе.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 21.09.2012, 10:55   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
надо подсчитать, сколько раз встречается каждый из них
чтобы что-то считать нужно место для хранения подсчитанного.
Для частоты одного символа достаточно переменной.
Каждый из них (символов) Значит нужен массив частот.

В начале подсчетов у нас все количества =0. Значит задаем массиву частот (всем элементам) начальные значения =0.

Берем символ из исходного массива.
Определяем нужную ячейку в массиве частот.
Увеличиваем это значение на 1
переходим к следующему символу в исходной строке или заканчиваем подсчет.
Выводим результаты (значения элементов массива частот).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.09.2012, 11:10   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Определяем нужную ячейку в массиве частот.
А чего ее определять? Задать несколько массивов вида:

Код:
a1: array ['a'..'z'] of word;
a2: array ['A'..'Z'] of word;

и тд
Тогда надо будет определять только, в какой массив писать число.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 21.09.2012, 11:20   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Да легче сразу задать массив для всех символов
a:array[0..255] of longint;
И делать inc(a[ord(c)]);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.09.2012, 11:31   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
a1: array ['a'..'z'] of word;
a2: array ['A'..'Z'] of word;
Цитата:
a:array[0..255] of longint;
И делать inc(a[ord(c)]);
Это уже реализация алгоритма, автор же просил исключительно алгоритм.
Цитата:
Подскажите алгоритм ориентированный на Паскаль
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.09.2012 в 11:34.
evg_m вне форума Ответить с цитированием
Старый 21.09.2012, 12:23   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Это уже реализация алгоритма, автор же просил исключительно алгоритм.
Ну увлеклись, увлеклись
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Частотный словарь текста (Си) Taina Помощь студентам 6 20.06.2012 11:55
Частотный словарь. dixonich Общие вопросы по Java, Java SE, Kotlin 5 19.09.2011 23:31
Java. Частотный словарь. dixonich Помощь студентам 1 17.09.2011 07:39
частотный словарь с# OLGUNYA C# (си шарп) 5 23.05.2011 14:50
частотный словарь в sagitron Microsoft Office Excel 11 07.01.2010 20:55