Die Struktur der Tatsachen istWie man ein bestimmtes Element Tatsache Zugriff in einer Liste in Prolog
%structure
student(ID,FirstName,LastName,[courseList]).
course(CourseCode,CourseTtile,Credits,Level).
Nach der Tatsache.
student(20135639,'Mohammed','Abdul Wahab',
[course('ITIS411','DATABASE SYSTEM IMPLEMENTATION',3,hard),
course('ITIS412','INFORMATION SECURITY',3 ,easy),
course('ITIS499','SENIOR PROJECT',3,hard),
course('ITIS469','AI',3,hard)]).
Ich möchte eine Regel schreiben, die die Kredite Stunden aus der Liste summiert
sum([],0).
sum(H|T,S):-
sum(T,S1),
S is H + S1.
sumCr(Id, Cr):-
student(Id,_,_,Courselist),
sum(Courselist,Cr).
Die obige Regel fasst alle Elemente des Sachverhalts in der Liste, aber ich möchte nur den Cr-Wert summieren aller Fakten in der Liste. Also, wenn ich die folgende Abfrage ausführen, sollte die Ausgabe sein.
?. sumCr(20135639, Cr).
Cr=12.
'sum' der nichts summieren; es ergibt "0" für eine leere Liste und eine nicht gebundene Variable für eine längere Liste. –
Ich habe den Fehler korrigiert @ScottHunter – Far
'sum (H | T, S)' hat Syntaxprobleme. Außerdem soll Ihre 'sum/2' eine Liste von ganzen Zahlen summieren, aber Sie übergeben eine Liste von Kursnamen (oder etwas, das nicht klar ist). – lurker