2012-03-10 3 views
0

私はコースモジュール、学生、および彼らが参加しているモジュールの詳細を含むプロローグプログラムを持っています。複数の句の使用 - プロローグ

module(42, mod_details('Vocal Skills', 'Dawn Upshaw')). 
module(53, mod_details('Physics', 'Dave Jones')). 
module(64, mod_details('Maths', 'John Richards')). 
module(75, mod_details('History', 'El Capitan')). 

student('Bruce Wayne', student_det('100', '2')). 
student('Clarke Kent', student_det('200', '3')). 
student('Scott Summers', student_det('300', '1')). 
student('Richard Kimble', student_det('400', '2')). 

attends(100, 42). 
attends(300, 42). 
attends(400, 42). 
attends(200, 53). 
attends(300, 53). 
attends(300, 64). 
attends(100, 75). 
attends(200, 75). 
attends(300, 75). 
attends(400, 75). 

print_studentnos_for_modno(ModNo):- 
     attends(SNo, ModNo), 
    write(SNo). 

print_studentnos_for_modtitle(ModTitle):- 
    module(ModNo, mod_details(ModTitle, Lect)), 
    attends(SNo, ModNo), 
    write(SNo). 

is_a_student(StudentName):- 
    student(StudentName, student_det(SNo, Year)). 

print_students_lectured_by(Lect):- 
    module(ModNo, mod_details(ModTitle, Lect)), 
    attends(SNo, ModNo), 
    student(StudentName, student_det(SNo, Year)), 
    write(StudentName), write(' '), 
    write(SNo). 

最後の節、print_students_lectured_by(LECT)は、その学生の数が続く生徒の名前をプリントアウトすることになっている次のようにプログラムがあります。しかし、それは誤った答えを与えるだけです。

私は非常に新しいので、私の句を修正する方法についてのアドバイスをいただければ幸いです。

多くのおかげ アンディ

答えて

2
student('Bruce Wayne', student_det('100', '2')) 

は、学生の残りのための

student('Bruce Wayne', student_det(100, 2)) 

と同様にする必要があります。

+0

ありがとうその常に私を得る遅れた間違い! – user1261259