Поиск слова |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Поиск слова |
Серг |
Сообщение
#1
|
Гость |
Здравствуйте!
Есть текст и есть слова. Так вот в тексте нужно найти строку и символ, где впервые попадается любое из слов. Так вот вопрос в том, как можно произвести поиск! Я делал так: брал слово и получал его "код" - for i:=1 to length(s) do codes[i]:=codes[i]+ord[s]; и проходил полностью весь текст. Проблема в том, что если слово другое, но одинаковые буквы в нем, пример: drea и read. А целиком слово я хранить не могу, т.к. общее количество слов достигает 1000, да притом все делается на Паскале. Ограничения такие: максимальное число слов: 1000. Текст 400Кб Как можно еще попробовать ? |
P@sh@ |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: 2 |
Может CRC посчитать ? например так:
Код ror word ptr [CheckSum],1 movzx ax,byte ptr es:[di] add word ptr [CheckSum],ax или на паскале: Код var crc: word; ... crc:=0; for i:=1 to length(s) do begin asm ror crc,1 end; crc:=crc+ord(s[i]); end; ... можно вместо ror поставить rol - числа будут не такими большими... Сообщение отредактировано: volvo - |
Текстовая версия | 4.05.2024 21:12 |