语法错误:Prolog中的意外结束语句

时间:2015-06-24 03:42:19

标签: prolog syntax-error

我在Prolog中有以下错误:“语法错误:意外的子句结束”这个错误在声明程序triangulo,circulo和rectangulo的行中,这是我的代码:

areas:- nl,

display('1.Area triangulo'),nl,
display('2.Area circulo'),nl,
display('3.Area rectangulo'),nl,
display('4.Salir'),nl,
display('Escoja opcion:        '),nl,
read(X),opcion(X),

opcion(4).
opcion(X):-X=1,triangulo(W),areas;X=2,circulo(W),areas;X=3,rectangulo(W),areas.

triangulo(W):- write('INgresa base'),nl,
    read(B),nl,
       display('INgresa altura'),nl,
    read(A),nl,
areaT(B,A,R),nl,
    display('EL area del triangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A)/2.

circulo(W):- display('INgresa radio de circulo'),nl,
    read(RA),nl,


    areaC(RA,R),nl,
    display('EL area del CIRCULO ES: '), display(R),nl,nl,
    areaC(B,A,R):-R is(RA*RA*3.14).

rectangulo(W):- display('INgresa base'),nl,
    read(B),nl,
       display('INgresa altura'),nl,
    read(A),nl,
areaT(B,A,R),nl,
    display('EL area del rectangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A).

1 个答案:

答案 0 :(得分:1)

我可以发现2个问题(可能是复制和粘贴):

...
areaT(B,A,R),nl,
    display('EL area del triangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A)/2.
...

在这里

...
areaT(B,A,R),nl,
    display('EL area del rectangulo es: '), display(R),nl,nl,
areaT(B,A,R):-R is(B*A).
...

应该是

..., display(R),nl,nl.