1

ユーザーに誕生日を入力してもらい、星座を伝えようとしています。しかし、実際の誕生日と月を取得するのに苦労しています。誰か助けてくれませんか?読み取りをさまざまなファンクターに分離しようとしましたが、エラーが発生し続けます。両方の読み取りを組み合わせると、「構文エラー: 演算子の優先順位が衝突します」というエラーが表示されます。両方の読み取りを分離すると、「エラー: =:=/2: 引数が十分にインスタンス化されていません」というエラーが表示されます。

読み取りを組み合わせるときのコード:

start :-
   read_month,

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X),
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).

読み取りを分離するときのコード:

start :-
   read_month,
   read_day.

read_month :-
   write('Enter your birth month (month followed by a .): '),
   nl,
   read(X).

read_day :-
   write('Enter your day of birth (followed by a .): '),
   nl,
   read(Y),
   horoscope(X,Y).
4

1 に答える 1

3

初心者として、そのように始めないでください。(そして、最初のプログラムは構文的に正しくありません。最初の規則はピリオドで終わりません)。

代わりにmonth_day_sign/3、トップレベルで直接使用できるリレーションを次のように記述します。

?- month_day_sign(7,24,Sign).
Sign = leo.

これが、通常の Prolog との対話方法です。したがって、トップレベルのシェルの機能を利用しています。

これをマスターしたら、追加のインターフェースを作成できます。しかし、逆に行かないでください!


両方の「アクション」を分離することで、は...Xから切断されます。horoscope(X,Y)

于 2014-11-24T23:27:31.933 に答える