0

携帯電話修理のエキスパート システムを作成しています。

答えは [はいまたはいいえ] のみである必要があり、それ以外の場合は「無効な入力」が表示されます。コードでそれをトラップするにはどうすればよいですか?

ask(Question) :-  write('Question: '),
      write(Question),
      write('? '),
      write('(yes or no) : '),
      read(Response),
      nl,
      ((Response == yes ; Response == y) -> assert(yes(Question)) ; 
       (Response==no ; Response ==n) -> assert(no(Question)) ;
        write('\nInvalid Input!!!\n'),fail).

間違ったスペルが入力された場合、表示したいものをまだ実装できません。

4

1 に答える 1

1

まあ...あなたのコードは間違いなく機能します。gprolog を使用する場合は、必ずorで変更assertしてください。assertaassertz

| ?- [expert].
compiling *** for byte code...
*** compiled, 7 lines read - 2111 bytes written, 14 ms
(1 ms) yes
| ?- ask(man).
Question: man? (yes or no): y.
yes
| ?- ask(woman).
Question: woman? (yes or no): no.
(1 ms) yes
| ?- ask(silly).
Question: silly? (yes or no): dunno.
Invalid Input!!!
no
| ?- yes(man).
yes
| ?- no(man).
no
| ?- yes(woman).
no
| ?- no(woman).
(1 ms) yes
于 2013-02-09T09:30:28.213 に答える