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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2010, 12:15   #1
moda
Новичок
Джуниор
 
Регистрация: 20.03.2010
Сообщений: 2
По умолчанию подробнее о программе где сравнение массивов

Ув. Администраторы, это не учебный вопрос, а сугубо благотворительный! У меня есть свободно распространяемый справочник лекарственных препаратов(написанный мной лет 15 назад) сейчас появилась задача переделать его под винду(уже переделал) и за одно добавить к нему функцию сравнения несовместимости препаратов(собственно на чём и возникла проблема).
Вот алгоритм программы(если интересно):
Человек вводит "любое название, даже бытовое, в любом склонении"
2 -ищем в базе название(бытовое или действ.) выводим действ. название и описание. И сейчас я добавляю процедуру сравнивания нескольких(до 5) действ.названий на совместимость. То есть вводим 6 названий, и если в файле(обычном текстовом win base.txt ) в одной строке есть комбинации этих слов(все варианты забиваются по таблицам), то как обычно выводим следующую строчку с ответом. Таким образом обычный человек не имея сложных таблиц(и умений ими пользоваться) может просто узнать от чего ему так хреново если он пьет "новопассит" и "аспирин"
Просто до таких тонкостей раньше не доходило, и с массивами я могу только сравнить их как есть(по порядку) или количество букв в них, сумму чисел, а как просто сравнить содержимое не знаю(сначала думал что можно посчитать сумму ASCII кодов букв, не считает , хотя не пойму почему я же задавал array[0..255] может какой оператор есть? который бы просто обозначал содержимое массива не зависимо от порядка. то есть массив M [ а б в г д ] = Е [ б в г д а ]
Может есть и другие способы поиска комбинации слов в файле, но я пока кроме сравнения массивов ничего не придумал.
Если знаете как это сделать то поделитесь пожалуйста.
moda вне форума Ответить с цитированием
Старый 21.03.2010, 12:40   #2
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

вы про функцию pos когда нибудь слыхали?
пусть S - строка из файла
n - то название которое надо найти
if pos(' '+n+' ',s)<>0 значит мы нашли строку содержащую наше название
вот теперь делайте с ней что хотите))
Google2010 вне форума Ответить с цитированием
Старый 21.03.2010, 15:19   #3
moda
Новичок
Джуниор
 
Регистрация: 20.03.2010
Сообщений: 2
По умолчанию

я с помощью Pos и обнаруживаю, pos(slovo,s)<>0 then....с кавычками просто находит слово из строки, ну найдём слова, но только если слова введены в том же порядке что и в строке.
Даже пробовал так: разбил "n" по словам 1, 2,3 4,5
и ищем поочередно if pos(slovo1,s) and pos(slovo2,s)>0 then begin и т.д.
т.о. работает слова находит в любом порядке. НО! НЕ ГОДИТСЯ потому что
находит эти слова в других строчках где присутствую и другие!

Последний раз редактировалось mihali4; 21.03.2010 в 21:12.
moda вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение массивов до заданной разницы (Delphi7) giga_person Помощь студентам 1 17.02.2010 22:55
Корректное сравнение массивов на условии. Alex Cones Общие вопросы Delphi 4 10.01.2010 15:08
расскажите подробнее об operator Пепел Феникса Общие вопросы C/C++ 8 09.11.2009 00:09
Подскажите, где в программе ошибка gamer123 Паскаль, Turbo Pascal, PascalABC.NET 3 25.02.2008 03:09