Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带乘法Prolog的规则_Prolog - Fatal编程技术网

带乘法Prolog的规则

带乘法Prolog的规则,prolog,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). 如果课程成绩占总成绩的25%,考试成绩占总成绩的75%,我想写一条规则,给我一个人的总分 我试过: got_perc(Person,Perc):-

序言新手在这里。我有以下事实:

%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).
如果课程成绩占总成绩的25%,考试成绩占总成绩的75%,我想写一条规则,给我一个人的总分

我试过:

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

请问有人能帮忙吗?谢谢。

正如潜伏者在他的评论中指出的那样,您需要使用
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
标准内置谓词也被定义为中缀运算符,它将左操作数与右操作数作为算术表达式求值的结果统一起来。

到目前为止,您所掌握的内容毫无意义。您将变量
Person
视为yoru
got_perc
子句主体中的函子。不能在一个术语内进行表达式求值。使用
is/2
进行数值计算,并用结果实例化变量。什么是
\ux
\uy