Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 5

Поиск болезни по симптому

26.03.2015, 16:14. Показов 1399. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые участники форума! Очень нужна ваша помощь
Изучаю Пролог четвертый день, работаю со средой Visual Prolog 5.2. Была поставлена задача: определить заболевание по симптому. Симптом вводится с клавиатуры. Вот то, на что хватило моих "обширных" познаний:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
domains
    sign_list = symptom* %список симптомов
    symptom, name = symbol %симптомы и названия болезней
    code = integer %код заболевания
 
predicates
    illness(code, name, sign_list)
 
clauses
    illness(1011,"ORZ",["kashel", "nasmork", "slabost"]).
    illness(1021,"Pielonefrit",["pochki","temperatura","toshnota"]).
    illness(2012,"Angina",["gorlo","temperatura","slabost"]).
 
goal
    write("Vvedite symptom: "),nl,
    readln(S),nl,
    illness(Code, Name, [S,_,_]), nl,  
    write("Bolezni s symptomom ", S), nl, nl,
    write("Name: ", Name),  nl, 
    write("Code : ", Code),  nl, nl.
И все оно, конечно, хорошо, но если введенный симптом не совпадает с порядковой позицией в illness, то, даже если он есть списке, то в результатах не отображается.
Благодаря форуму, нашла кусочек кода на определение, есть ли заданный элемент в списке.

Prolog
1
2
member(H,[H|_]):-!.%чтоб сделать nondeterm заменить на member(H,[H|_]).
member(H,[_|T]):-member(H,T).
Но моих мозгов не хватило, чтобы сообразить, как и куда грамотно вставить этот кусочек, чтобы, допустим, при вводе симптома slabost выводилась информация о заболевании с названиями "ORZ" и "Angina" (попытки были, но в результате либо ничего не работает либо "no solutions").

Подскажите, пожалуйста, как это сделать. Или, возможно, существует какой-либо другой способ добиться заданной цели. Буду очень признательна за любые советы и подсказки!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2015, 16:14
Ответы с готовыми решениями:

Справка по болезни
Мне дали справку , о том что я болел с 27.11.12 по 03.12.12 , справка по третье число , это значит что я еще болел и мне можно выходить...

Болезни и их лечение.
Добрый вечер. Подскажите пожалуйста диету при гипертонии. или сайт. где это можно вычитать. Заранее спасибо.

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

1
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 5
27.03.2015, 21:21  [ТС]
Цитата Сообщение от Svetlan Посмотреть сообщение
Добрый день, уважаемые участники форума! Очень нужна ваша помощь
Изучаю Пролог четвертый день, работаю со средой Visual Prolog 5.2. Была поставлена задача: определить заболевание по симптому. Симптом вводится с клавиатуры. Вот то, на что хватило моих "обширных" познаний:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
domains
    sign_list = symptom* %список симптомов
    symptom, name = symbol %симптомы и названия болезней
    code = integer %код заболевания
 
predicates
    illness(code, name, sign_list)
 
clauses
    illness(1011,"ORZ",["kashel", "nasmork", "slabost"]).
    illness(1021,"Pielonefrit",["pochki","temperatura","toshnota"]).
    illness(2012,"Angina",["gorlo","temperatura","slabost"]).
 
goal
    write("Vvedite symptom: "),nl,
    readln(S),nl,
    illness(Code, Name, [S,_,_]), nl,  
    write("Bolezni s symptomom ", S), nl, nl,
    write("Name: ", Name),  nl, 
    write("Code : ", Code),  nl, nl.
И все оно, конечно, хорошо, но если введенный симптом не совпадает с порядковой позицией в illness, то, даже если он есть списке, то в результатах не отображается.
Благодаря форуму, нашла кусочек кода на определение, есть ли заданный элемент в списке.

Prolog
1
2
member(H,[H|_]):-!.%чтоб сделать nondeterm заменить на member(H,[H|_]).
member(H,[_|T]):-member(H,T).
Но моих мозгов не хватило, чтобы сообразить, как и куда грамотно вставить этот кусочек, чтобы, допустим, при вводе симптома slabost выводилась информация о заболевании с названиями "ORZ" и "Angina" (попытки были, но в результате либо ничего не работает либо "no solutions").

Подскажите, пожалуйста, как это сделать. Или, возможно, существует какой-либо другой способ добиться заданной цели. Буду очень признательна за любые советы и подсказки!
Ладно, с этим делом как-нибудь разберемся.
Тогда такой вопрос. Может быть, кто-нибудь знает, как заставить выводимые результаты писаться в новый список??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2015, 21:21
Помогаю со студенческими работами здесь

Болезни которые ЛЕЧИТ СЕКС
В чем практический эффект интимных отношений? Да, поднимают настроение, дают уверенность в себе. А, может, еще и исцеляют от всяких-разных...

Access. База данных история болезни
Здравствуйте, помогите,пожалуйста, разобраться. В Accesse есть форма а на ней будет вкладка анализы. На форме имеется строка...

История болезни пациентов на php mysql
Приветствую, есть система для учета паспортных данных и истории болезней пациентов. Как добавлять паспортные данные в mysql я знаю в...

Тест на наличие болезни (чтение с текстового файла)
Доброго времени суток. Требуется разработать тест, который считывает с файла "Вопросы" - все вопросы и один за одним выводит их...

Запрос, к какому врачу направить в зависимости от болезни
Помогите написать запрос, к какому врачу направить в зависимости от болезни. Я не очень разбираюсь в прологе, написал базу как смог и не...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru