Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > как посчитать количество слов |
Автор: Teran 3.10.2006, 15:17 |
Поскажите как можно посчитать количество слов в большом текстовом файле? просто перебирать посимвольно и искать пробелы не подходит так как занимает очень много времени (при файле 100кб поиск занял 2 минуты) |
Автор: Matematik 3.10.2006, 15:26 |
http://rouse.drkb.ru/ Словарь уникальных слов. |
Автор: Teran 3.10.2006, 16:23 | ||
а TStringList или AnsiString - это разве не память? а если необходимо например искать колличество предложений?? |
Автор: Alexeis 3.10.2006, 17:06 |
Там про это не было написано... Значит алгоритм поиска по пробелам реализован неоптимально. Должно быть не более 5 секунд Код в студию! |
Автор: Teran 3.10.2006, 17:13 | ||
ps язык роли не играет Добавлено @ 17:14 можеш показать такой алгоритм?? ![]() |
Автор: sergejzr 3.10.2006, 17:22 | ||
Teran, проблема у тебя не в алгоритме, а в чтении из файла. (Я предполагаю). Многие читают с диска посимвольно и удивляются, почему программа тормозит ![]() ПС: Хотя с алгоритмом тоже трабла ![]() Надо чтото типа
PPS: Код не проверял |
Автор: Alexeis 3.10.2006, 17:24 |
Простейший вариант использовать функцию PosEx, из модуля StrUtils. Написана она на ассемблере и позволяет производить поиск начиная с определенной позиции в строке. |
Автор: sergejzr 3.10.2006, 17:26 | ||
ПППС: Количество предложений это количество точек,воскл/вопр знаков Вместо isalpha(*txt) напиши:
Остальное всё в принципе можно оставить как есть, только названия переменных не будут совпадать, но это уже мелочи. |
Автор: Alexeis 3.10.2006, 17:28 | ||||
К сожалению я не знаком с внутренней реализацией функций на билдере, а потому не могу определить какая из операций является тормозом в этом коде...
StringList - оптимизирован для чтения из файла текста, так что это маловероятно. Добавлено @ 17:31 Еще вариант
![]() |
Автор: sergejzr 3.10.2006, 17:37 | ||
Кстати, ТСтрингЛист ещё и строки делит сам??? тогда в мусор его. ![]()
PS: А что, считаются только пробелы? А перехосы строк? А ошибки типа "Привет!"-Сказал Вася? Добавлено @ 17:40 Модератор: А что С++ код делает в дельфях? |
Автор: Guedda 3.10.2006, 17:51 |
А если предложение незаконченное (...), либо выражает истинное удивление (???), либо сильно восклицательное (!!!)? В таком случае этот вариант не подходит. |
Автор: Marriage 3.10.2006, 17:58 | ||
А что за компутер ??? Если Пень 75 то около того и будет. Скинь свой текст, а то у меня файл 1.06 Мб проверялся около минуты. у меня пень 2.4. Код не рассчитан на все случаи жизни,считает быстрее чем 100 кб за 2 мин.
|
Автор: Teran 3.10.2006, 18:07 | ||
а чего это программа найдет например первую "." и посчитает предложение+1, - все правильно затем все идущие заним точки (хоть 100) считать не будет sergejzr Тебе выражаю особенную благодарность твой код это все считает за 0.5 - 1 секунду |
Автор: sergejzr 3.10.2006, 18:08 | ||
Тот код, который я написал - подходит. |
Автор: Marriage 3.10.2006, 19:12 |
А окончательный вариант на Дельфи выложить можно ?? |
Автор: Romikgy 3.10.2006, 19:49 |
а что считаете словами? и как слова должны отделятся друг от друга? |