2014-05-13 70 views
0

序言新手在这里。我有以下事实:规则与乘法Prolog

%marks(person, coursework_mark, exam_mark) 
marks(julie, 77, 63). 
marks(pete, 55, 21). 
marks(chris, 69, 53). 
marks(samantha, 68, 42). 
marks(james, 79, 73). 

,并想编写一个规则,让我的人总标记如果整体档次和exam_mark数的25%coursework_mark计数剩下的75%。

我已经试过:

got_perc(Person,Perc):-marks(Person((_X*0.25)+(_Y*0.75)). 

请谁能帮助?谢谢。

+2

你到目前为止没有任何意义。你在yoru'got_perc'子句中将变量'Person'作为一个函数对待。你不能在术语内进行表达评估。使用'is/2'来进行数值计算并用结果实例化一个变量。什么是_X和_Y? – lurker

回答

1

正如lurker在他的评论中指出的那样,您将需要使用is/2标准内置谓词进行计算。喜欢的东西:

got_perc(Person, Perc) :- 
    % get student work and exam grades 
    marks(Person, Work, Exam), 
    % calculate the student final grade 
    Perc is Work*0.25 + Exam*0.75. 

is/2的标准内置谓词,其也被定义为中缀运算符,结合与评估右操作数作为算术表达式的结果的左操作数。