-1
我的代碼在這裏有一些問題。 比方說,我有一個知識基礎是這樣的:序言 - 失敗; true
university('University of Cambridge', 1, 'United Kingdom', 90.3, 92.8, 89.4).
university('University of Oxford', 2, 'United Kingdom', 88.9, 94.8, 88.0).
university('ETH Zurich - Swiss Federal Institute of Technology', 3, 'Switzerland', 86.4, 94.4, 92.2).
university('University of Edinburgh', 4, 'United Kingdom', 83.7, 88.8, 83.6).
然後我把它弄成這樣: (忽略checkC(國家)/ checkC(_))
checkC(Country):-
university(U, R, Country, _, _, _),nl,
write('University: '),write(U),nl,
write('Rank: '),write(R),nl,
write('Country: '),write(Country),nl,
fail; true, nl,
write('************'), nl,nl.
checkC(_):-
write('Country not found'),nl,nl.
我的問題是爲什麼如果用戶輸入一個不在知識庫內的隨機國家名稱,寫('Country not found')不會出來,我發現它跟失敗有關;真。
任何幫助?
嗨,有沒有辦法按升序排列列表,因爲現在它按降序顯示。 – Huxley 2014-12-05 01:27:54
當然。要麼使用'sort/2'並且先排名,那麼你必須在'format'調用中使用位置參數。或者寫一個比較謂詞並調用'predsort/3'。如果您確定子句按數據庫中的排序進行排序,則還可以在'writeCountries'謂詞的子句體中切換兩行。 – 2014-12-05 04:31:51