このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/188
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク): 
#  #include <stdio.h> 
#   
#  int main(void) 
#  { 
#  int a, b, c; /* 整数変数a,b,cの宣言 */ 
#   
#  printf("身長を入力してください"); 
#  scanf("%d", &a); 
#  printf("体重を入力してください"); 
#  scanf("%d", &b); 
#   
#  printf( "%d-%dは %d\n", a,b,c); /* 表示 */ 
#  return 0; 
#  } 
#  こちらのコードを少し変えて 
#  身長と体重の変数(どちらも倍精度実数変数)を宣言。身長と体重を入力し、画面に表示する。身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。 
#  【実行結果例】 
#  身長を入力してください(cm)?170.5 
#  体重を入力してください(cm)?65.5 
#  身長は170.5で、体重は65.5です。  
#  

'身長と体重を入力し、画面に表示する。身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。' :-
        '身長と体重を入力し'(_身長,_体重),
        '画面に表示する。身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。'(_身長,_体重).

'画面に表示する。身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。'(_身長,_体重) :-
        '適宜コメントを'(_身長,_体重,_コメント),
        '身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。'(_身長,_体重,_コメント).

'適宜コメントを'(_身長,_体重,_コメント) :-
        'BMI値の計算判定'(_身長,_体重,_BMI値,_BMI値判定),
        atomic_list_concat(['BMI値は',_BMI値,' 判定は ',_BMI値判定,' です'],_コメント).

'身長と体重の表示はprintfを1回使用する。身長と体重は小数点以下1桁を表示させる。適宜コメントを書く。'(_身長,_体重,_コメント) :-
        format('身長 ~1f   体重~1f',[_身長,_体重]),
        writef(' コメントは %t\n',[_コメント]).        

'身長と体重を入力し'(_身長,_体重) :-
        身長の入力(_身長),
        体重の入力(_体重).

身長の入力(_身長) :-
        get_line(Line),
        身長の入力診断(Line,_身長),!.
身長の入力(_身長) :-
        身長の入力(_身長).

身長の入力診断(Line,_身長) :-
        atom_to_term(Line,_身長,_),
        number(_身長),
        _身長 >= 0.0,
        _身長 =< 250.0,!.
身長の入力診断(Line,_身長) :-
        writef('入力された %t からは適切な身長が得られません。再入力をお願いします。\n',[Line]),
        fail.

体重の入力(_体重) :-
        write('体重を入力してください : '),
        get_line(Line),
        体重の入力診断(Line,_体重),!.
体重の入力(_体重) :-
        体重の入力(_体重).

体重の入力診断(Line,_体重) :-
        atom_to_term(Line,_体重,_),
        number(_体重),
        _体重 >= 0.0,
        _体重 =< 250.0,!.
体重の入力診断(Line,_体重) :-
        writef('入力された %t からは適切な体重が得られません。再入力をお願いします。\n',[Line]),
        fail.

'BMI値の計算判定'(_身長,_体重,_BMI値,_BMI値判定) :-
        'BMI値の計算'(_身長,_体重,_BMI値),
        'BMI値の判定'(_BMI値,_BMI値の判定).

'BMI値の計算'(_身長,_体重,_BMI値) :-
        _身長 > 3,
        _BMI値 is _体重 / (_身長 ^ 2).

'BMI値の判定'(_BMI値,やせています) :-
        _BMI値 < 20.0,!.
'BMI値の判定'(_BMI値,普通です) :-
        _BMI値 >= 20.0,
        _BMI値 < 20.0,!.
'BMI値の判定'(_BMI値,やや肥満です) :-
        _BMI値 >= 24.0,
        _BMI値 < 26.5,!.
'BMI値の判定'(_BMI値,肥満です) :-
        _BMI値 >= 26.5,!.