prolog编程有人吗?

时间:2011-07-15 15:30:18

标签: prolog

维护变量 抱歉我的英文

这是我的代码

stampa_diagnosi(X) :- gia_chiesto(S, 'si'), sintomo(S, M), not(sintomo(S, X)), M \= X,
nl, write('Una possibile diagnosi è: '), write(X), nl,

write('il paziente ha un peso minore di 65 KG? (1, 2, 3) '),nl,read(P),peso(P), nl.

peso(1) :- write('Possibile cura: '), cura1(X), nl, write(' ----- '), nl,spiegacome.
peso(2) :- write('Possibile cura: '), cura2(X), nl, write(' ----- '), nl,spiegacome.
peso(3) :- write('Possibile cura: '), cura3(X), nl, write(' ----- '), nl,spiegacome.

cura1(centaurea_minore) :- write('La cura è di 10 gocce .').

cura2(centaurea_minore) :- write('La cura è di 30 gocce .').

cura3(centaurea_minore) :- write('La cura è di 40 gocce .').

cura1(agnocasto) :- write('La cura è di 10 gocce .').

cura2(agnocasto) :- write('La cura è di 30 gocce .').

cura3(agnocasto) :- write('La cura è di 40 gocce .').

当我询问患者体重的问题时,如何保持诊断X的值?

我的问题需要我,一旦我找到基于体重的治疗,我必须选择正确的治疗方法吗?

显然,我对每三种解决方案都非常关心和关心

1 个答案:

答案 0 :(得分:0)

  

当我询问患者体重的问题时,如何保持诊断X的值?

很简单。遵循DRY原则,使用输出参数并重写

peso(1) :- write('Possibile cura: '), cura1(X), nl, write(' ----- '), nl,spiegacome.
peso(2) :- write('Possibile cura: '), cura2(X), nl, write(' ----- '), nl,spiegacome.
peso(3) :- write('Possibile cura: '), cura3(X), nl, write(' ----- '), nl,spiegacome.

peso(N, X) :-
    write('Possibile cura: '), cura1(X), nl, write(' ----- '), nl,spiegacome.

(并相应地更新stampa_diagnosi。)