このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/166
#  表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい.  
#  プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること.  
#  注意  
#  " 体重はkg, 身長,腹囲はcmで入力する.  
#  " 性別は 1 で男性,2で女性を表す.  
#  " BMI値 = 体重(kg) / 身長(m)2  
#  " 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある  
#   
#  表示例 
#  データ1を入力してください 
#  名前: Hanako 
#  性別: 2 
#  身長: 156.4 
#  体重: 65.3 
#  腹囲: 93.4 
#  名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります 
#  コピペ終わり 
#  本当はデータ3つです。改行制限で割愛 
#  

'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する' :-
        '名前,性別,身長,体重,腹囲(ウエスト)を3人分入力'(L),
        '3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'(L).

'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力'(L) :-
        findall([_名前,_性別,_身長,_体重,_腹囲],(
                    for(1,N,3),
                    write('名前:'),get_line(Line),atom_to_term(Line,_名前,_),
                    write('性別:'),get_line(Line),atom_to_term(Line,_性別,_),
                    write('身長:'),get_line(Line),atom_to_term(Line,_身長,_),
                    write('体重:'),get_line(Line),atom_to_term(Line,_体重,_),
                    write('腹囲:'),get_line(Line),atom_to_term(Line,_腹囲,_)),
                L).

'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'([]) :- !.
'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'([[_名前,_性別,_身長,_体重,_腹囲]|R]) :-
        write_formatted('%t:%t, %t:%t, %t:%t, %t:%t,%t :%t, ',[名前,性別,身長,体重,腹囲,_名前,_性別,_身長,_体重,_腹囲]),
        _BMI値 = _体重 / ((_身長 / 100) ^ 2),  
        write_formatted('%t:%t, ',['BMI値:',_BMI値]),
        診断(_性別,_腹囲,_診断),
        write_formatted('%t\n',[_診断]),
        '3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'(R).

診断(1,_腹囲,メタボリック症候群の疑いがあります) :- _腹囲 >= 85,!.
診断(2,_腹囲,メタボリック症候群の疑いがあります) :- _腹囲 >= 90,!.
診断(_,_,'').