09/07/13 05:38:06
>>461 入力検査の部分を修正。
'5 人の学生の身長を読み込んで、その平均身長を求める' :-
'5 人の学生の身長を読み込んで、'(_身長ならび),
sum(_身長ならび,_合計),
_平均身長 is _合計 / 5,
write_formatted('平均身長: %t\n',[_平均身長]),
'5 人の学生の身長を読み込んで、'(_身長ならび) :-
findall(_身長,(for(1,N番目,5),身長を得る(N番目,_身長)),_身長ならび).
身長を得る(N番目,_身長) :-
write_formatted('%t 番: ',[N番目]),
数値を得る(_身長),
身長として適切な数値であるか検査する(_身長),!.
身長を得る(N番目,_身長) :-
身長を得る(N番目,_身長).
身長として適切な数値であるか検査する(_身長) :- _身長 > 0.0,_身長 < 230.0,!.
身長として適切な数値であるか検査する(_身長) :-
write_formatted('%tは身長として適切な数値ではありませんでした。再入力が必要
です\n',[_身長]),fail.
数値を得る(_数値) :-
get_line(_改行までの文字列),
atom_to_term(_改行までの文字列,_数値,_),
number(_数値).